summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAJ ONeal <coolaj86@gmail.com>2018-10-28 16:46:16 -0600
committertechknowlogick <hello@techknowlogick.com>2018-10-28 18:46:16 -0400
commitb8451190d85af255a94b02cdfdd6d375015b3864 (patch)
tree19430b0cb6609dbf7904625269aa47a2b8e344b5
parenta2ee2a3c67304920a968c1c852e43b3dc2d7c3e7 (diff)
downloadgitea-b8451190d85af255a94b02cdfdd6d375015b3864.tar.gz
gitea-b8451190d85af255a94b02cdfdd6d375015b3864.zip
UX of link account (Step 1) (#5006)
* Show either sign up OR sign in * disambiguate fresh start from adding recovery options * use tabs to switch between account link flows * add active to tab body as well * changes as per discussion * handle specific error; fix missing err typo
-rw-r--r--options/locale/locale_en-US.ini7
-rw-r--r--routers/user/auth.go26
-rw-r--r--templates/user/auth/link_account.tmpl32
-rw-r--r--templates/user/auth/signin_inner.tmpl14
-rw-r--r--templates/user/auth/signup_inner.tmpl14
5 files changed, 79 insertions, 14 deletions
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 6855e0376b..a0babf7a19 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -9,7 +9,6 @@ sign_in_with = Sign In With
sign_out = Sign Out
sign_up = Register
link_account = Link Account
-link_account_signin_or_signup = Sign in with existing credentials to link your existing account to this account. Or register a new one.
register = Register
website = Website
version = Version
@@ -230,6 +229,12 @@ twofa_passcode_incorrect = Your passcode is incorrect. If you misplaced your dev
twofa_scratch_token_incorrect = Your scratch code is incorrect.
login_userpass = Sign In
login_openid = OpenID
+oauth_signup_tab = Register New Account
+oauth_signup_title = Add Email and Password (for Account Recovery)
+oauth_signup_submit = Complete Account
+oauth_signin_tab = Link to Existing Account
+oauth_signin_title = Sign In to Authorize Linked Account
+oauth_signin_submit = Link Account
openid_connect_submit = Connect
openid_connect_title = Connect to an existing account
openid_connect_desc = The chosen OpenID URI is unknown. Associate it with a new account here.
diff --git a/routers/user/auth.go b/routers/user/auth.go
index a4a0ee3e6a..25aa437efd 100644
--- a/routers/user/auth.go
+++ b/routers/user/auth.go
@@ -664,8 +664,30 @@ func LinkAccount(ctx *context.Context) {
return
}
- ctx.Data["user_name"] = gothUser.(goth.User).NickName
- ctx.Data["email"] = gothUser.(goth.User).Email
+ uname := gothUser.(goth.User).NickName
+ email := gothUser.(goth.User).Email
+ ctx.Data["user_name"] = uname
+ ctx.Data["email"] = email
+
+ if len(email) != 0 {
+ u, err := models.GetUserByEmail(email)
+ if err != nil && !models.IsErrUserNotExist(err) {
+ ctx.ServerError("UserSignIn", err)
+ return
+ }
+ if u != nil {
+ ctx.Data["user_exists"] = true
+ }
+ } else if len(uname) != 0 {
+ u, err := models.GetUserByName(uname)
+ if err != nil && !models.IsErrUserNotExist(err) {
+ ctx.ServerError("UserSignIn", err)
+ return
+ }
+ if u != nil {
+ ctx.Data["user_exists"] = true
+ }
+ }
ctx.HTML(200, tplLinkAccount)
}
diff --git a/templates/user/auth/link_account.tmpl b/templates/user/auth/link_account.tmpl
index 73aafd6feb..339ca855dd 100644
--- a/templates/user/auth/link_account.tmpl
+++ b/templates/user/auth/link_account.tmpl
@@ -1,15 +1,33 @@
{{template "base/head" .}}
+
<div class="user link-account">
<div class="ui middle very relaxed page grid">
<div class="column">
- <p class="large center">
- {{.i18n.Tr "link_account_signin_or_signup"}}
- </p>
+
+ <div class="ui tabular menu">
+ <!-- TODO handle .ShowRegistrationButton once other login bugs are fixed -->
+ <div class="item {{if not .user_exists}}active{{end}}"
+ data-tab="auth-link-signup-tab">
+ {{.i18n.Tr "auth.oauth_signup_tab"}}
+ </div>
+ <div class="item {{if .user_exists}}active{{end}}"
+ data-tab="auth-link-signin-tab">
+ {{.i18n.Tr "auth.oauth_signin_tab"}}
+ </div>
+ </div>
+
+ <div class="ui tab {{if not .user_exists}}active{{end}}"
+ data-tab="auth-link-signup-tab">
+ {{template "user/auth/signup_inner" .}}
+ </div>
+ <div class="ui tab {{if .user_exists}}active{{end}}"
+ data-tab="auth-link-signin-tab">
+ <div class="ui user signin container icon">
+ {{template "user/auth/signin_inner" .}}
+ </div>
+ </div>
</div>
</div>
</div>
-<div class="ui user signin container icon">
-{{template "user/auth/signin_inner" .}}
-</div>
-{{template "user/auth/signup_inner" .}}
+
{{template "base/footer" .}}
diff --git a/templates/user/auth/signin_inner.tmpl b/templates/user/auth/signin_inner.tmpl
index 019bda570c..bf1cc055f4 100644
--- a/templates/user/auth/signin_inner.tmpl
+++ b/templates/user/auth/signin_inner.tmpl
@@ -2,7 +2,11 @@
{{template "base/alert" .}}
{{end}}
<h4 class="ui top attached header center">
- {{.i18n.Tr "auth.login_userpass"}}
+ {{if .LinkAccountMode}}
+ {{.i18n.Tr "auth.oauth_signin_title"}}
+ {{else}}
+ {{.i18n.Tr "auth.login_userpass"}}
+ {{end}}
</h4>
<div class="ui attached segment">
<form class="ui form" action="{{.SignInLink}}" method="post">
@@ -27,7 +31,13 @@
<div class="inline field">
<label></label>
- <button class="ui green button">{{.i18n.Tr "sign_in"}}</button>
+ <button class="ui green button">
+ {{if .LinkAccountMode}}
+ {{.i18n.Tr "auth.oauth_signin_submit"}}
+ {{else}}
+ {{.i18n.Tr "sign_in"}}
+ {{end}}
+ </button>
<a href="{{AppSubUrl}}/user/forgot_password">{{.i18n.Tr "auth.forgot_password"}}</a>
</div>
diff --git a/templates/user/auth/signup_inner.tmpl b/templates/user/auth/signup_inner.tmpl
index cd969276b9..25b50dad86 100644
--- a/templates/user/auth/signup_inner.tmpl
+++ b/templates/user/auth/signup_inner.tmpl
@@ -4,7 +4,11 @@
<form class="ui form" action="{{.SignUpLink}}" method="post">
{{.CsrfTokenHtml}}
<h3 class="ui top attached header">
- {{.i18n.Tr "sign_up"}}
+ {{if .LinkAccountMode}}
+ {{.i18n.Tr "auth.oauth_signup_title"}}
+ {{else}}
+ {{.i18n.Tr "sign_up"}}
+ {{end}}
</h3>
<div class="ui attached segment">
{{if or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeRegister)}}
@@ -47,7 +51,13 @@
<div class="inline field">
<label></label>
- <button class="ui green button">{{.i18n.Tr "auth.create_new_account"}}</button>
+ <button class="ui green button">
+ {{if .LinkAccountMode}}
+ {{.i18n.Tr "auth.oauth_signup_submit"}}
+ {{else}}
+ {{.i18n.Tr "auth.create_new_account"}}
+ {{end}}
+ </button>
</div>
{{if not .LinkAccountMode}}