diff --git a/.env.example b/.env.example index 6a37010..2b5e73e 100644 --- a/.env.example +++ b/.env.example @@ -77,6 +77,11 @@ GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= GITHUB_REDIRECT_URI="${APP_URL}/auth/github/callback" +GITLAB_CLIENT_ID= +GITLAB_CLIENT_SECRET= +GITLAB_REDIRECT_URI="${APP_URL}/auth/gitlab/callback" +GITLAB_INSTANCE_URI=https://gitlab.com/ + REVERB_APP_ID= REVERB_APP_KEY= REVERB_APP_SECRET= diff --git a/app/Domains/Repository/Actions/BulkCreateRepositoriesAction.php b/app/Domains/Repository/Actions/BulkCreateRepositoriesAction.php index 9d72a3b..70749ab 100644 --- a/app/Domains/Repository/Actions/BulkCreateRepositoriesAction.php +++ b/app/Domains/Repository/Actions/BulkCreateRepositoriesAction.php @@ -86,6 +86,6 @@ private function resolveBaseUrl(GitProvider $provider, string $userUuid): ?strin ->where('provider', $provider) ->first(); - return $credential?->credentials['url'] ?? null; + return $credential?->credentials['url'] ?? config('services.gitlab.instance_uri'); } } diff --git a/app/Domains/Repository/Http/Controllers/RepositoryController.php b/app/Domains/Repository/Http/Controllers/RepositoryController.php index 512ac08..e88f0e2 100644 --- a/app/Domains/Repository/Http/Controllers/RepositoryController.php +++ b/app/Domains/Repository/Http/Controllers/RepositoryController.php @@ -235,6 +235,6 @@ private function resolveBaseUrl(GitProvider $provider, string $userUuid): ?strin ->where('provider', $provider) ->first(); - return $credential?->credentials['url'] ?? null; + return $credential?->credentials['url'] ?? config('services.gitlab.instance_uri'); } } diff --git a/app/Domains/Repository/Services/GitProviders/GitLabProvider.php b/app/Domains/Repository/Services/GitProviders/GitLabProvider.php index 8f6c795..91522e0 100644 --- a/app/Domains/Repository/Services/GitProviders/GitLabProvider.php +++ b/app/Domains/Repository/Services/GitProviders/GitLabProvider.php @@ -57,7 +57,7 @@ protected function configureHttpClient(): PendingRequest public function getBaseUrl(): string { - return rtrim($this->getCredential('url', 'https://gitlab.com'), '/'); + return rtrim($this->getCredential('url', config('services.gitlab.instance_uri')), '/'); } protected function getEncodedProjectPath(): string diff --git a/app/Http/Controllers/Settings/UserGitCredentialController.php b/app/Http/Controllers/Settings/UserGitCredentialController.php index cf445ef..18a62d6 100644 --- a/app/Http/Controllers/Settings/UserGitCredentialController.php +++ b/app/Http/Controllers/Settings/UserGitCredentialController.php @@ -29,6 +29,7 @@ public function index(): Response 'providers' => GitProvider::options(), 'githubConnectUrl' => route('settings.github.connect'), 'gitlabConnectUrl' => route('settings.gitlab.connect'), + 'gitlabInstanceUri' => rtrim(config('services.gitlab.instance_uri'), '/'), ]); } diff --git a/resources/js/components/git-credential-dialog.tsx b/resources/js/components/git-credential-dialog.tsx index de9f16a..57ea4d7 100644 --- a/resources/js/components/git-credential-dialog.tsx +++ b/resources/js/components/git-credential-dialog.tsx @@ -25,6 +25,7 @@ interface GitCredentialDialogProps { providers: Record; githubConnectUrl?: string; gitlabConnectUrl?: string; + gitlabInstanceUri: string; isOpen: boolean; onClose: () => void; } @@ -35,6 +36,7 @@ export default function GitCredentialDialog({ providers, githubConnectUrl, gitlabConnectUrl, + gitlabInstanceUri, isOpen, onClose, }: GitCredentialDialogProps) { @@ -196,11 +198,14 @@ export default function GitCredentialDialog({ id="url" name="credentials[url]" type="url" - placeholder="https://gitlab.com" + placeholder={gitlabInstanceUri} />

- Leave empty for GitLab.com, or enter your - self-hosted GitLab instance URL + Leave empty for{' '} + + {gitlabInstanceUri} + + , or enter another GitLab instance URL.

diff --git a/resources/js/pages/settings/git-credentials.tsx b/resources/js/pages/settings/git-credentials.tsx index 5fd8abf..1122c3c 100644 --- a/resources/js/pages/settings/git-credentials.tsx +++ b/resources/js/pages/settings/git-credentials.tsx @@ -26,6 +26,7 @@ interface GitCredentialsPageProps { providers: Record; githubConnectUrl: string; gitlabConnectUrl: string; + gitlabInstanceUri: string; } const breadcrumbs: BreadcrumbItem[] = [ @@ -44,6 +45,7 @@ export default function GitCredentials({ providers, githubConnectUrl, gitlabConnectUrl, + gitlabInstanceUri, }: GitCredentialsPageProps) { const [dialogOpen, setDialogOpen] = useState(false); const [editingCredential, setEditingCredential] = @@ -255,6 +257,7 @@ export default function GitCredentials({ providers={providers} githubConnectUrl={githubConnectUrl} gitlabConnectUrl={gitlabConnectUrl} + gitlabInstanceUri={gitlabInstanceUri} isOpen={dialogOpen} onClose={() => { setDialogOpen(false);