diff --git a/server/auth.go b/server/auth.go index f874b7e9..51dab321 100644 --- a/server/auth.go +++ b/server/auth.go @@ -101,6 +101,24 @@ func (s *Server) registerAuthRoutes(g *echo.Group, secret string) { return echo.NewHTTPError(http.StatusInternalServerError, "Incorrect login credentials, please try again") } if user == nil { + allowSignUpSetting, err := s.Store.FindSystemSetting(ctx, &api.SystemSettingFind{ + Name: api.SystemSettingAllowSignUpName, + }) + if err != nil && common.ErrorCode(err) != common.NotFound { + return echo.NewHTTPError(http.StatusInternalServerError, "Failed to find system setting").SetInternal(err) + } + + allowSignUpSettingValue := false + if allowSignUpSetting != nil { + err = json.Unmarshal([]byte(allowSignUpSetting.Value), &allowSignUpSettingValue) + if err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, "Failed to unmarshal system setting allow signup").SetInternal(err) + } + } + if !allowSignUpSettingValue { + return echo.NewHTTPError(http.StatusUnauthorized, "signup is disabled").SetInternal(err) + } + userCreate := &api.UserCreate{ Username: userInfo.Identifier, // The new signup user should be normal user by default.