From 221c0af75e0184ec197165b40578e18c3ebf41f9 Mon Sep 17 00:00:00 2001 From: Mai-Lapyst Date: Tue, 24 May 2022 03:21:10 +0200 Subject: [PATCH 1/3] Adding button to link accounts from user settings --- routers/web/auth/oauth.go | 12 +++++++++++- routers/web/user/setting/security/security.go | 9 +++++++++ routers/web/web.go | 8 ++++---- .../user/settings/security/accountlinks.tmpl | 18 ++++++++++++++++++ 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/routers/web/auth/oauth.go b/routers/web/auth/oauth.go index 9aa31c1c0232e..f646615968cc2 100644 --- a/routers/web/auth/oauth.go +++ b/routers/web/auth/oauth.go @@ -847,7 +847,17 @@ func SignInOAuthCallback(ctx *context.Context) { } if u == nil { - if !setting.Service.AllowOnlyInternalRegistration && setting.OAuth2Client.EnableAutoRegistration { + if ctx.Doer != nil { + // attach user to already logged in user + err = externalaccount.LinkAccountToUser(ctx.Doer, gothUser) + if err != nil { + ctx.ServerError("UserLinkAccount", err) + return + } + + ctx.Redirect(setting.AppSubURL + "/user/settings/security") + return + } else if !setting.Service.AllowOnlyInternalRegistration && setting.OAuth2Client.EnableAutoRegistration { // create new user with details from oauth2 provider var missingFields []string if gothUser.UserID == "" { diff --git a/routers/web/user/setting/security/security.go b/routers/web/user/setting/security/security.go index a87012c480b4d..747bf64a17bfb 100644 --- a/routers/web/user/setting/security/security.go +++ b/routers/web/user/setting/security/security.go @@ -14,6 +14,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/services/auth/source/oauth2" ) const ( @@ -109,6 +110,14 @@ func loadSecurityData(ctx *context.Context) { } ctx.Data["AccountLinks"] = sources + orderedOAuth2Names, oauth2Providers, err := oauth2.GetActiveOAuth2Providers() + if err != nil { + ctx.ServerError("GetActiveOAuth2Providers", err) + return + } + ctx.Data["OrderedOAuth2Names"] = orderedOAuth2Names + ctx.Data["OAuth2Providers"] = oauth2Providers + openid, err := user_model.GetUserOpenIDs(ctx.Doer.ID) if err != nil { ctx.ServerError("GetUserOpenIDs", err) diff --git a/routers/web/web.go b/routers/web/web.go index 97ea1e90353f4..1e550286f9eb1 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -344,10 +344,6 @@ func RegisterRoutes(m *web.Route) { }, openIDSignInEnabled) m.Get("/sign_up", auth.SignUp) m.Post("/sign_up", bindIgnErr(forms.RegisterForm{}), auth.SignUpPost) - m.Group("/oauth2", func() { - m.Get("/{provider}", auth.SignInOAuth) - m.Get("/{provider}/callback", auth.SignInOAuthCallback) - }) m.Get("/link_account", linkAccountEnabled, auth.LinkAccount) m.Post("/link_account_signin", linkAccountEnabled, bindIgnErr(forms.SignInForm{}), auth.LinkAccountPostSignIn) m.Post("/link_account_signup", linkAccountEnabled, bindIgnErr(forms.RegisterForm{}), auth.LinkAccountPostRegister) @@ -452,6 +448,10 @@ func RegisterRoutes(m *web.Route) { m.Get("/task/{task}", reqSignIn, user.TaskStatus) m.Get("/stopwatches", reqSignIn, user.GetStopwatches) m.Get("/search", ignExploreSignIn, user.Search) + m.Group("/oauth2", func() { + m.Get("/{provider}", auth.SignInOAuth) + m.Get("/{provider}/callback", auth.SignInOAuthCallback) + }) }) // ***** END: User ***** diff --git a/templates/user/settings/security/accountlinks.tmpl b/templates/user/settings/security/accountlinks.tmpl index 7a9935d031def..f590fc1e8bdb0 100644 --- a/templates/user/settings/security/accountlinks.tmpl +++ b/templates/user/settings/security/accountlinks.tmpl @@ -1,5 +1,23 @@

{{.i18n.Tr "settings.manage_account_links"}} +
+ +

From 17cf06f652796bb6f410fb44883a65c0a4961a23 Mon Sep 17 00:00:00 2001 From: Mai-Lapyst Date: Tue, 24 May 2022 17:28:28 +0200 Subject: [PATCH 2/3] Only display button to link user accounts when at least one OAuth2 provider is active --- .../user/settings/security/accountlinks.tmpl | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/templates/user/settings/security/accountlinks.tmpl b/templates/user/settings/security/accountlinks.tmpl index f590fc1e8bdb0..0ced0408b5f30 100644 --- a/templates/user/settings/security/accountlinks.tmpl +++ b/templates/user/settings/security/accountlinks.tmpl @@ -1,23 +1,25 @@

{{.i18n.Tr "settings.manage_account_links"}} -
-

From 34115f4eddcda4b1e1d0db93d1168d82c3a29950 Mon Sep 17 00:00:00 2001 From: Mai-Lapyst Date: Thu, 26 May 2022 22:13:31 +0200 Subject: [PATCH 3/3] Fixing up some css in the accountlinks template --- templates/user/settings/security/accountlinks.tmpl | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/templates/user/settings/security/accountlinks.tmpl b/templates/user/settings/security/accountlinks.tmpl index 0ced0408b5f30..cdbd8ad1de791 100644 --- a/templates/user/settings/security/accountlinks.tmpl +++ b/templates/user/settings/security/accountlinks.tmpl @@ -2,18 +2,16 @@ {{.i18n.Tr "settings.manage_account_links"}} {{if .OrderedOAuth2Names}}
-