diff --git a/app/Extensions/OAuth/Providers/GitlabProvider.php b/app/Extensions/OAuth/Providers/GitlabProvider.php new file mode 100644 index 000000000..71a497ad0 --- /dev/null +++ b/app/Extensions/OAuth/Providers/GitlabProvider.php @@ -0,0 +1,77 @@ + env('OAUTH_GITLAB_HOST'), + ]); + } + + public function getSettingsForm(): array + { + return array_merge(parent::getSettingsForm(), [ + TextInput::make('OAUTH_GITLAB_HOST') + ->label('Custom Host') + ->placeholder('Only set a custom host if you are self hosting gitlab') + ->columnSpan(2) + ->url() + ->autocomplete(false) + ->default(env('OAUTH_GITLAB_HOST')), + ]); + } + + public function getSetupSteps(): array + { + return array_merge([ + Step::make('Register new Gitlab OAuth App') + ->schema([ + Placeholder::make('') + ->content(new HtmlString(Blade::render('Check out the Gitlab docs on how to create the oauth app.'))), + TextInput::make('_noenv_callback') + ->label('Redirect URI') + ->dehydrated() + ->disabled() + ->hintAction(fn () => request()->isSecure() ? CopyAction::make() : null) + ->default(fn () => config('app.url') . (Str::endsWith(config('app.url'), '/') ? '' : '/') . 'auth/oauth/callback/gitlab'), + ]), + ], parent::getSetupSteps()); + } + + public function getIcon(): string + { + return 'tabler-brand-gitlab'; + } + + public function getHexColor(): string + { + return '#fca326'; + } + + public static function register(Application $app): self + { + return new self($app); + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index a3b18a189..843169eff 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -10,6 +10,7 @@ use App\Checks\NodeVersionsCheck; use App\Checks\PanelVersionCheck; use App\Checks\ScheduleCheck; use App\Checks\UsedDiskSpaceCheck; +use App\Extensions\OAuth\Providers\GitlabProvider; use App\Models; use App\Extensions\Captcha\Providers\TurnstileProvider; use App\Extensions\OAuth\Providers\AuthentikProvider; @@ -97,7 +98,7 @@ class AppServiceProvider extends ServiceProvider CommonProvider::register($app, 'linkedin', null, 'tabler-brand-linkedin-f', '#0a66c2'); CommonProvider::register($app, 'google', null, 'tabler-brand-google-f', '#4285f4'); GithubProvider::register($app); - CommonProvider::register($app, 'gitlab', null, 'tabler-brand-gitlab', '#fca326'); + GitlabProvider::register($app); CommonProvider::register($app, 'bitbucket', null, 'tabler-brand-bitbucket-f', '#205081'); CommonProvider::register($app, 'slack', null, 'tabler-brand-slack', '#6ecadc');