diff options
author | Sandro Santilli <strk@kbt.io> | 2017-08-19 17:34:49 +0200 |
---|---|---|
committer | Kim "BKC" Carlbäcker <kim.carlbacker@gmail.com> | 2017-08-19 17:34:49 +0200 |
commit | 2c3a229a3c4cc3e86c5a1130bbd058ba78022a6a (patch) | |
tree | 674c05386c007308c7b4033756eba7cc6536b58c | |
parent | e7653a67a10483aa0e2c9cc019abe9021e8df9ce (diff) | |
download | gitea-2c3a229a3c4cc3e86c5a1130bbd058ba78022a6a.tar.gz gitea-2c3a229a3c4cc3e86c5a1130bbd058ba78022a6a.zip |
Add OpenID configuration in install page (#2276)
-rw-r--r-- | modules/auth/user_form.go | 2 | ||||
-rw-r--r-- | options/locale/locale_en-US.ini | 4 | ||||
-rw-r--r-- | public/js/index.js | 13 | ||||
-rw-r--r-- | routers/install.go | 4 | ||||
-rw-r--r-- | routers/routes/routes.go | 49 | ||||
-rw-r--r-- | routers/user/auth_openid.go | 9 | ||||
-rw-r--r-- | templates/install.tmpl | 12 |
7 files changed, 67 insertions, 26 deletions
diff --git a/modules/auth/user_form.go b/modules/auth/user_form.go index 4f7b80f590..3193717150 100644 --- a/modules/auth/user_form.go +++ b/modules/auth/user_form.go @@ -41,6 +41,8 @@ type InstallForm struct { OfflineMode bool DisableGravatar bool EnableFederatedAvatar bool + EnableOpenIDSignIn bool + EnableOpenIDSignUp bool DisableRegistration bool EnableCaptcha bool RequireSignInView bool diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index d3abb30f8c..9931d9152b 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -116,6 +116,10 @@ federated_avatar_lookup = Enable Federated Avatars Lookup federated_avatar_lookup_popup = Enable federated avatar lookup using Libravatar. disable_registration = Disable Self-registration disable_registration_popup = Disable user self-registration, only admin can create accounts. +openid_signin = Enable OpenID Sign-In +openid_signin_popup = Enable user login via OpenID +openid_signup = Enable OpenID Self-registration +openid_signup_popup = Enable OpenID based Self-registration enable_captcha = Enable Captcha enable_captcha_popup = Require a CAPTCHA for user self-registration. require_sign_in_view = Enable Require Sign In to View Pages diff --git a/public/js/index.js b/public/js/index.js index f6060dc631..1bad33e08d 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -311,9 +311,22 @@ function initInstall() { $('#offline-mode').checkbox('uncheck'); } }); + $('#enable-openid-signin input').change(function () { + if ($(this).is(':checked')) { + if ( $('#disable-registration input').is(':checked') ) { + } else { + $('#enable-openid-signup').checkbox('check'); + } + } else { + $('#enable-openid-signup').checkbox('uncheck'); + } + }); $('#disable-registration input').change(function () { if ($(this).is(':checked')) { $('#enable-captcha').checkbox('uncheck'); + $('#enable-openid-signup').checkbox('uncheck'); + } else { + $('#enable-openid-signup').checkbox('check'); } }); $('#enable-captcha input').change(function () { diff --git a/routers/install.go b/routers/install.go index 3d051bd376..08f5d80f3b 100644 --- a/routers/install.go +++ b/routers/install.go @@ -108,6 +108,8 @@ func Install(ctx *context.Context) { form.OfflineMode = setting.OfflineMode form.DisableGravatar = setting.DisableGravatar form.EnableFederatedAvatar = setting.EnableFederatedAvatar + form.EnableOpenIDSignIn = true + form.EnableOpenIDSignUp = true form.DisableRegistration = setting.Service.DisableRegistration form.EnableCaptcha = setting.Service.EnableCaptcha form.RequireSignInView = setting.Service.RequireSignInView @@ -292,6 +294,8 @@ func InstallPost(ctx *context.Context, form auth.InstallForm) { cfg.Section("server").Key("OFFLINE_MODE").SetValue(com.ToStr(form.OfflineMode)) cfg.Section("picture").Key("DISABLE_GRAVATAR").SetValue(com.ToStr(form.DisableGravatar)) cfg.Section("picture").Key("ENABLE_FEDERATED_AVATAR").SetValue(com.ToStr(form.EnableFederatedAvatar)) + cfg.Section("openid").Key("ENABLE_OPENID_SIGNIN").SetValue(com.ToStr(form.EnableOpenIDSignIn)) + cfg.Section("openid").Key("ENABLE_OPENID_SIGNUP").SetValue(com.ToStr(form.EnableOpenIDSignUp)) cfg.Section("service").Key("DISABLE_REGISTRATION").SetValue(com.ToStr(form.DisableRegistration)) cfg.Section("service").Key("ENABLE_CAPTCHA").SetValue(com.ToStr(form.EnableCaptcha)) cfg.Section("service").Key("REQUIRE_SIGNIN_VIEW").SetValue(com.ToStr(form.RequireSignInView)) diff --git a/routers/routes/routes.go b/routers/routes/routes.go index a7a759538f..d765c4c03b 100644 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -136,6 +136,20 @@ func RegisterRoutes(m *macaron.Macaron) { bindIgnErr := binding.BindIgnErr validation.AddBindingRules() + openIDSignInEnabled := func(ctx *context.Context) { + if !setting.Service.EnableOpenIDSignIn { + ctx.Error(403) + return + } + } + + openIDSignUpEnabled := func(ctx *context.Context) { + if !setting.Service.EnableOpenIDSignUp { + ctx.Error(403) + return + } + } + m.Use(user.GetNotificationCount) // FIXME: not all routes need go through same middlewares. @@ -163,19 +177,21 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/user", func() { m.Get("/login", user.SignIn) m.Post("/login", bindIgnErr(auth.SignInForm{}), user.SignInPost) - if setting.Service.EnableOpenIDSignIn { + m.Group("", func() { m.Combo("/login/openid"). Get(user.SignInOpenID). Post(bindIgnErr(auth.SignInOpenIDForm{}), user.SignInOpenIDPost) - m.Group("/openid", func() { - m.Combo("/connect"). - Get(user.ConnectOpenID). - Post(bindIgnErr(auth.ConnectOpenIDForm{}), user.ConnectOpenIDPost) - m.Combo("/register"). - Get(user.RegisterOpenID). + }, openIDSignInEnabled) + m.Group("/openid", func() { + m.Combo("/connect"). + Get(user.ConnectOpenID). + Post(bindIgnErr(auth.ConnectOpenIDForm{}), user.ConnectOpenIDPost) + m.Group("/register", func() { + m.Combo(""). + Get(user.RegisterOpenID, openIDSignUpEnabled). Post(bindIgnErr(auth.SignUpOpenIDForm{}), user.RegisterOpenIDPost) - }) - } + }, openIDSignUpEnabled) + }, openIDSignInEnabled) m.Get("/sign_up", user.SignUp) m.Post("/sign_up", bindIgnErr(auth.RegisterForm{}), user.SignUpPost) m.Get("/reset_password", user.ResetPasswd) @@ -206,15 +222,12 @@ func RegisterRoutes(m *macaron.Macaron) { m.Post("/email/delete", user.DeleteEmail) m.Get("/password", user.SettingsPassword) m.Post("/password", bindIgnErr(auth.ChangePasswordForm{}), user.SettingsPasswordPost) - if setting.Service.EnableOpenIDSignIn { - m.Group("/openid", func() { - m.Combo("").Get(user.SettingsOpenID). - Post(bindIgnErr(auth.AddOpenIDForm{}), user.SettingsOpenIDPost) - m.Post("/delete", user.DeleteOpenID) - m.Post("/toggle_visibility", user.ToggleOpenIDVisibility) - }) - } - + m.Group("/openid", func() { + m.Combo("").Get(user.SettingsOpenID). + Post(bindIgnErr(auth.AddOpenIDForm{}), user.SettingsOpenIDPost) + m.Post("/delete", user.DeleteOpenID) + m.Post("/toggle_visibility", user.ToggleOpenIDVisibility) + }, openIDSignInEnabled) m.Combo("/keys").Get(user.SettingsKeys). Post(bindIgnErr(auth.AddKeyForm{}), user.SettingsKeysPost) m.Post("/keys/delete", user.DeleteKey) diff --git a/routers/user/auth_openid.go b/routers/user/auth_openid.go index dcc3fcf0fc..a5124680dd 100644 --- a/routers/user/auth_openid.go +++ b/routers/user/auth_openid.go @@ -259,6 +259,7 @@ func ConnectOpenID(ctx *context.Context) { // ConnectOpenIDPost handles submission of a form to connect an OpenID URI to an existing account func ConnectOpenIDPost(ctx *context.Context, form auth.ConnectOpenIDForm) { + oid, _ := ctx.Session.Get("openid_verified_uri").(string) if oid == "" { ctx.Redirect(setting.AppSubURL + "/user/login/openid") @@ -300,10 +301,6 @@ func ConnectOpenIDPost(ctx *context.Context, form auth.ConnectOpenIDForm) { // RegisterOpenID shows a form to create a new user authenticated via an OpenID URI func RegisterOpenID(ctx *context.Context) { - if !setting.Service.EnableOpenIDSignUp { - ctx.Error(403) - return - } oid, _ := ctx.Session.Get("openid_verified_uri").(string) if oid == "" { ctx.Redirect(setting.AppSubURL + "/user/login/openid") @@ -328,10 +325,6 @@ func RegisterOpenID(ctx *context.Context) { // RegisterOpenIDPost handles submission of a form to create a new user authenticated via an OpenID URI func RegisterOpenIDPost(ctx *context.Context, cpt *captcha.Captcha, form auth.SignUpOpenIDForm) { - if !setting.Service.EnableOpenIDSignUp { - ctx.Error(403) - return - } oid, _ := ctx.Session.Get("openid_verified_uri").(string) if oid == "" { ctx.Redirect(setting.AppSubURL + "/user/login/openid") diff --git a/templates/install.tmpl b/templates/install.tmpl index ede1d4399f..5c6d1a9473 100644 --- a/templates/install.tmpl +++ b/templates/install.tmpl @@ -189,12 +189,24 @@ </div> </div> <div class="inline field"> + <div class="ui checkbox" id="enable-openid-signin"> + <label class="poping up" data-content="{{.i18n.Tr "install.openid_signin_popup"}}"><strong>{{.i18n.Tr "install.openid_signin"}}</strong></label> + <input name="enable_open_id_sign_in" type="checkbox" {{if .enable_open_id_sign_in}}checked{{end}}> + </div> + </div> + <div class="inline field"> <div class="ui checkbox" id="disable-registration"> <label class="poping up" data-content="{{.i18n.Tr "install.disable_registration_popup"}}"><strong>{{.i18n.Tr "install.disable_registration"}}</strong></label> <input name="disable_registration" type="checkbox" {{if .disable_registration}}checked{{end}}> </div> </div> <div class="inline field"> + <div class="ui checkbox" id="enable-openid-signup"> + <label class="poping up" data-content="{{.i18n.Tr "install.openid_signup_popup"}}"><strong>{{.i18n.Tr "install.openid_signup"}}</strong></label> + <input name="enable_open_id_sign_up" type="checkbox" {{if .enable_open_id_sign_up}}checked{{end}}> + </div> + </div> + <div class="inline field"> <div class="ui checkbox" id="enable-captcha"> <label class="poping up" data-content="{{.i18n.Tr "install.enable_captcha_popup"}}"><strong>{{.i18n.Tr "install.enable_captcha"}}</strong></label> <input name="enable_captcha" type="checkbox" {{if .enable_captcha}}checked{{end}}> |