mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-26 06:16:56 +09:00
Backport #39785 by @bircni The [Gitea VS Code extension](https://gitea.com/gitea/gitea-vscode) currently signs in through the builtin `tea` OAuth2 application. Gitea keeps one grant per user and application, so anyone who has already signed in with the tea CLI gets `a grant exists with different scope` when the extension requests its own scopes, and sign-in fails (gitea/gitea-vscode#24). This adds a dedicated builtin application for the extension, following the same mechanism as the existing CLI entries: | | | |---|---| | client ID | `75a9ec3e-42b5-40cb-9144-9ea96ecd56a6` | | config name | `gitea-vscode` | | display name | `gitea-vscode` | | redirect URIs | `http://127.0.0.1`, `https://127.0.0.1` (loopback, any port) | It is enabled by default via `[oauth2].DEFAULT_APPLICATIONS`. Instances that set that option explicitly need to add `gitea-vscode` to use it. The extension will use this client on Gitea >= 28.2.0 and keep falling back to `tea` on older servers, so this should be backported to v28. Co-authored-by: bircni <bircni@icloud.com>
This commit is contained in:
1 parent
95d6b572fe
commit
0e2a188d8e
4 files changed
+14
-3
No files matched your search
@@ -638,7 +638,8 @@ ENABLED = true
|
|||||||
;; * https://github.com/git-ecosystem/git-credential-manager
|
;; * https://github.com/git-ecosystem/git-credential-manager
|
||||||
;; * https://gitea.com/gitea/tea
|
;; * https://gitea.com/gitea/tea
|
||||||
;; * Gitea App (the official Gitea mobile app)
|
;; * Gitea App (the official Gitea mobile app)
|
||||||
;DEFAULT_APPLICATIONS = git-credential-oauth, git-credential-manager, tea, gitea-app
|
;; * https://gitea.com/gitea/gitea-vscode
|
||||||
|
;DEFAULT_APPLICATIONS = git-credential-oauth, git-credential-manager, tea, gitea-app, gitea-vscode
|
||||||
;;
|
;;
|
||||||
;; By default, OAuth2 applications can only use "http" and "https" as their redirect URI schemes.
|
;; By default, OAuth2 applications can only use "http" and "https" as their redirect URI schemes.
|
||||||
;; If you need to use other schemes (e.g. for desktop applications), you can specify them here as a comma-separated list.
|
;; If you need to use other schemes (e.g. for desktop applications), you can specify them here as a comma-separated list.
|
||||||
|
|||||||
@@ -88,6 +88,16 @@ func BuiltinApplications() map[string]*BuiltinOAuth2Application {
|
|||||||
DisplayName: "Gitea App",
|
DisplayName: "Gitea App",
|
||||||
RedirectURIs: []string{"com.gitea.app://oauth/callback"},
|
RedirectURIs: []string{"com.gitea.app://oauth/callback"},
|
||||||
}
|
}
|
||||||
|
m["75a9ec3e-42b5-40cb-9144-9ea96ecd56a6"] = &BuiltinOAuth2Application{
|
||||||
|
ConfigName: "gitea-vscode",
|
||||||
|
DisplayName: "gitea-vscode",
|
||||||
|
RedirectURIs: []string{
|
||||||
|
"http://127.0.0.1",
|
||||||
|
"https://127.0.0.1",
|
||||||
|
"vscode://gitea.gitea-for-vscode/auth/callback",
|
||||||
|
"vscode-insiders://gitea.gitea-for-vscode/auth/callback",
|
||||||
|
},
|
||||||
|
}
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ var OAuth2 = struct {
|
|||||||
JWTSigningAlgorithm: "RS256",
|
JWTSigningAlgorithm: "RS256",
|
||||||
JWTSigningPrivateKeyFile: "jwt/private.pem",
|
JWTSigningPrivateKeyFile: "jwt/private.pem",
|
||||||
MaxTokenLength: math.MaxInt16,
|
MaxTokenLength: math.MaxInt16,
|
||||||
DefaultApplications: []string{"git-credential-oauth", "git-credential-manager", "tea", "gitea-app"},
|
DefaultApplications: []string{"git-credential-oauth", "git-credential-manager", "tea", "gitea-app", "gitea-vscode"},
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadOAuth2From(rootCfg ConfigProvider) {
|
func loadOAuth2From(rootCfg ConfigProvider) {
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ func TestGetGeneralSigningSecretSave(t *testing.T) {
|
|||||||
func TestOauth2DefaultApplications(t *testing.T) {
|
func TestOauth2DefaultApplications(t *testing.T) {
|
||||||
cfg, _ := NewConfigProviderFromData(``)
|
cfg, _ := NewConfigProviderFromData(``)
|
||||||
loadOAuth2From(cfg)
|
loadOAuth2From(cfg)
|
||||||
assert.Equal(t, []string{"git-credential-oauth", "git-credential-manager", "tea", "gitea-app"}, OAuth2.DefaultApplications)
|
assert.Equal(t, []string{"git-credential-oauth", "git-credential-manager", "tea", "gitea-app", "gitea-vscode"}, OAuth2.DefaultApplications)
|
||||||
|
|
||||||
cfg, _ = NewConfigProviderFromData(`[oauth2]
|
cfg, _ = NewConfigProviderFromData(`[oauth2]
|
||||||
DEFAULT_APPLICATIONS = tea
|
DEFAULT_APPLICATIONS = tea
|
||||||
|
|||||||
Reference in new issue
Block a user