From 42e712a5e918c01bcef0dd072a661e2e1ead5eac Mon Sep 17 00:00:00 2001 From: kunw Date: Thu, 31 Mar 2016 20:15:36 +0800 Subject: [PATCH] refined processes of self-registration feature. --- controllers/base.go | 14 ++++++------- controllers/register.go | 36 ++++++++++++++++++++++---------- static/resources/js/register.js | 2 +- views/segment/header-content.tpl | 4 ++-- 4 files changed, 35 insertions(+), 21 deletions(-) diff --git a/controllers/base.go b/controllers/base.go index 01400f676..a1b98cfe8 100644 --- a/controllers/base.go +++ b/controllers/base.go @@ -40,6 +40,8 @@ func (c *CommonController) Render() error { type BaseController struct { beego.Controller i18n.Locale + SelfRegistration bool + IsAdminLoginedUser bool } type langType struct { @@ -52,8 +54,6 @@ const ( ) var supportLanguages map[string]langType -var enableAddUserByAdmin bool -var isAdminLoginedUser bool // Prepare extracts the language information from request and populate data for rendering templates. func (b *BaseController) Prepare() { @@ -111,21 +111,21 @@ func (b *BaseController) Prepare() { selfRegistration := strings.ToLower(os.Getenv("SELF_REGISTRATION")) - if selfRegistration == "off" { - enableAddUserByAdmin = true + if selfRegistration == "on" { + b.SelfRegistration = true } if sessionUserID != nil { var err error - isAdminLoginedUser, err = dao.IsAdminRole(sessionUserID) + b.IsAdminLoginedUser, err = dao.IsAdminRole(sessionUserID) if err != nil { log.Errorf("Error occurred in IsAdminRole:%v", err) b.CustomAbort(http.StatusInternalServerError, "Internal error.") } } - b.Data["IsAdminLoginedUser"] = isAdminLoginedUser - b.Data["EnableAddUserByAdmin"] = enableAddUserByAdmin + b.Data["IsAdminLoginedUser"] = b.IsAdminLoginedUser + b.Data["SelfRegistration"] = b.SelfRegistration } diff --git a/controllers/register.go b/controllers/register.go index f627f415d..5593d6835 100644 --- a/controllers/register.go +++ b/controllers/register.go @@ -34,25 +34,39 @@ type RegisterController struct { // Get renders the Sign In page, it only works if the auth mode is set to db_auth func (rc *RegisterController) Get() { - if enableAddUserByAdmin && !isAdminLoginedUser { - log.Error("Self registration can only be used by admin user.\n") + if !rc.BaseController.SelfRegistration { + log.Error("Registration can only be used by admin user when self-registrion is off.\n") rc.Redirect("/signIn", http.StatusFound) } - pageTitleKey := "page_title_registration" - - if isAdminLoginedUser { - pageTitleKey = "page_title_add_user" - } - authMode := os.Getenv("AUTH_MODE") if authMode == "" || authMode == "db_auth" { - rc.ForwardTo(pageTitleKey, "register") + rc.ForwardTo("page_title_registration", "register") } else { rc.Redirect("/signIn", http.StatusFound) } } +// AddUserController handles request for adding user with an admin role user +type AddUserController struct { + BaseController +} + +// Get renders the Sign In page, it only works if the auth mode is set to db_auth +func (ac *AddUserController) Get() { + + if !ac.BaseController.IsAdminLoginedUser { + ac.Redirect("/signIn", http.StatusFound) + } + + authMode := os.Getenv("AUTH_MODE") + if authMode == "" || authMode == "db_auth" { + ac.ForwardTo("page_title_add_user", "register") + } else { + ac.Redirect("/signIn", http.StatusFound) + } +} + // SignUp insert data into DB based on data in form. func (rc *CommonController) SignUp() { @@ -61,8 +75,8 @@ func (rc *CommonController) SignUp() { rc.CustomAbort(http.StatusForbidden, "") } - if enableAddUserByAdmin && !isAdminLoginedUser { - log.Error("Self registration can only be used by admin user.\n") + if !(rc.BaseController.SelfRegistration || rc.BaseController.IsAdminLoginedUser) { + log.Error("Registration can only be used by admin role user when self-registration is off.\n") rc.CustomAbort(http.StatusForbidden, "") } diff --git a/static/resources/js/register.js b/static/resources/js/register.js index 82bc9d61c..1e1b964d2 100644 --- a/static/resources/js/register.js +++ b/static/resources/js/register.js @@ -55,7 +55,7 @@ jQuery(function(){ if(isAdminLoginedUser == "true") { document.location = "/registry/project"; }else{ - document.location = "/signIn"; + document.location = "/signIn"; } } }); diff --git a/views/segment/header-content.tpl b/views/segment/header-content.tpl index 88eed9db7..bd639b0dc 100644 --- a/views/segment/header-content.tpl +++ b/views/segment/header-content.tpl @@ -58,7 +58,7 @@ {{ end }} {{ if eq .AuthMode "db_auth" }} {{ if eq .IsAdminLoginedUser true }} -
  •   {{i18n .Lang "add_user"}}
  • +
  •   {{i18n .Lang "add_user"}}
  • {{ end }} {{ end}}
  •   {{i18n .Lang "log_out"}}
  • @@ -69,7 +69,7 @@ {{ else if eq .AuthMode "db_auth" }}
      - {{ if eq .EnableAddUserByAdmin false }} + {{ if eq .SelfRegistration true }}   {{ end }}