aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Sharshakov <d3dx12.xx@gmail.com>2023-09-13 08:14:21 +0300
committerGitHub <noreply@github.com>2023-09-13 05:14:21 +0000
commit63b53af933d748f9b4e0f1273e3701b4c3d08ac3 (patch)
treebfb8a2b0b642fb065783e7b721dcb2c2a4c7d92f
parentcda97a725347cdadd43af812749732b9d1ee6429 (diff)
downloadgitea-63b53af933d748f9b4e0f1273e3701b4c3d08ac3.tar.gz
gitea-63b53af933d748f9b4e0f1273e3701b4c3d08ac3.zip
Show OpenID Connect and OAuth on signup page (#20242)
Fix #19809 --------- Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com> Co-authored-by: jackHay22 <jack@allspice.io>
-rw-r--r--routers/web/auth/auth.go18
-rw-r--r--templates/user/auth/signin_navbar.tmpl3
-rw-r--r--templates/user/auth/signup.tmpl1
-rw-r--r--templates/user/auth/signup_inner.tmpl19
4 files changed, 41 insertions, 0 deletions
diff --git a/routers/web/auth/auth.go b/routers/web/auth/auth.go
index c20a45ebc9..dac8eb7afb 100644
--- a/routers/web/auth/auth.go
+++ b/routers/web/auth/auth.go
@@ -392,7 +392,16 @@ func SignUp(ctx *context.Context) {
ctx.Data["SignUpLink"] = setting.AppSubURL + "/user/sign_up"
+ orderedOAuth2Names, oauth2Providers, err := oauth2.GetActiveOAuth2Providers()
+ if err != nil {
+ ctx.ServerError("UserSignUp", err)
+ return
+ }
+
+ ctx.Data["OrderedOAuth2Names"] = orderedOAuth2Names
+ ctx.Data["OAuth2Providers"] = oauth2Providers
context.SetCaptchaData(ctx)
+
ctx.Data["PageIsSignUp"] = true
// Show Disabled Registration message if DisableRegistration or AllowOnlyExternalRegistration options are true
@@ -413,7 +422,16 @@ func SignUpPost(ctx *context.Context) {
ctx.Data["SignUpLink"] = setting.AppSubURL + "/user/sign_up"
+ orderedOAuth2Names, oauth2Providers, err := oauth2.GetActiveOAuth2Providers()
+ if err != nil {
+ ctx.ServerError("UserSignUp", err)
+ return
+ }
+
+ ctx.Data["OrderedOAuth2Names"] = orderedOAuth2Names
+ ctx.Data["OAuth2Providers"] = oauth2Providers
context.SetCaptchaData(ctx)
+
ctx.Data["PageIsSignUp"] = true
// Permission denied if DisableRegistration or AllowOnlyExternalRegistration options are true
diff --git a/templates/user/auth/signin_navbar.tmpl b/templates/user/auth/signin_navbar.tmpl
index 40f34cc01b..84574aa2c2 100644
--- a/templates/user/auth/signin_navbar.tmpl
+++ b/templates/user/auth/signin_navbar.tmpl
@@ -4,6 +4,9 @@
<a class="{{if .PageIsLogin}}active {{end}}item" rel="nofollow" href="{{AppSubUrl}}/user/login">
{{.locale.Tr "auth.login_userpass"}}
</a>
+ <a class="{{if .PageIsSignUp}}active{{end}} item" rel="nofollow" href="{{AppSubUrl}}/user/sign_up">
+ {{.locale.Tr "auth.create_new_account"}}
+ </a>
{{if .EnableOpenIDSignIn}}
<a class="{{if .PageIsLoginOpenID}}active {{end}}item" rel="nofollow" href="{{AppSubUrl}}/user/login/openid">
{{svg "fontawesome-openid"}}
diff --git a/templates/user/auth/signup.tmpl b/templates/user/auth/signup.tmpl
index 1d03f610dc..f238413ce2 100644
--- a/templates/user/auth/signup.tmpl
+++ b/templates/user/auth/signup.tmpl
@@ -1,5 +1,6 @@
{{template "base/head" .}}
<div role="main" aria-label="{{.Title}}" class="page-content user signin{{if .LinkAccountMode}} icon{{end}}">
+ {{template "user/auth/signin_navbar" .}}
<div class="ui middle very relaxed page grid">
{{template "user/auth/signup_inner" .}}
</div>
diff --git a/templates/user/auth/signup_inner.tmpl b/templates/user/auth/signup_inner.tmpl
index 8dfcb7b7d0..184b8b88fe 100644
--- a/templates/user/auth/signup_inner.tmpl
+++ b/templates/user/auth/signup_inner.tmpl
@@ -55,6 +55,25 @@
</div>
{{end}}
{{end}}
+
+ {{if and .OrderedOAuth2Names .OAuth2Providers}}
+ <div class="divider divider-text">
+ {{.locale.Tr "sign_in_or"}}
+ </div>
+ <div id="oauth2-login-navigator" class="gt-py-2">
+ <div class="gt-df gt-fc gt-jc">
+ <div id="oauth2-login-navigator-inner" class="gt-df gt-fc gt-fw gt-ac gt-gap-3">
+ {{range $key := .OrderedOAuth2Names}}
+ {{$provider := index $.OAuth2Providers $key}}
+ <a class="{{$provider.Name}} ui button gt-df gt-ac gt-jc gt-py-3 oauth-login-link" href="{{AppSubUrl}}/user/oauth2/{{$key}}">
+ {{$provider.IconHTML}}
+ {{$.locale.Tr "sign_in_with_provider" $provider.DisplayName}}
+ </a>
+ {{end}}
+ </div>
+ </div>
+ </div>
+ {{end}}
</form>
</div>
</div>