OAuth: Enforce auto_assign_org_id setting when role mapping enabled using Generic OAuth (#22268)
* OAuth: Make use of auto_assign_org_id setting
This commit is contained in:
@@ -186,7 +186,13 @@ func (hs *HTTPServer) OAuthLogin(ctx *m.ReqContext) {
|
|||||||
if userInfo.Role != "" {
|
if userInfo.Role != "" {
|
||||||
rt := m.RoleType(userInfo.Role)
|
rt := m.RoleType(userInfo.Role)
|
||||||
if rt.IsValid() {
|
if rt.IsValid() {
|
||||||
extUser.OrgRoles[1] = rt
|
var orgID int64
|
||||||
|
if setting.AutoAssignOrg && setting.AutoAssignOrgId > 0 {
|
||||||
|
orgID = int64(setting.AutoAssignOrgId)
|
||||||
|
} else {
|
||||||
|
orgID = int64(1)
|
||||||
|
}
|
||||||
|
extUser.OrgRoles[orgID] = rt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+10
-15
@@ -27,6 +27,7 @@ func (ls *LoginService) Init() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UpsertUser updates an existing user, or if it doesn't exist, inserts a new one.
|
||||||
func (ls *LoginService) UpsertUser(cmd *models.UpsertUserCommand) error {
|
func (ls *LoginService) UpsertUser(cmd *models.UpsertUserCommand) error {
|
||||||
extUser := cmd.ExternalUser
|
extUser := cmd.ExternalUser
|
||||||
|
|
||||||
@@ -38,12 +39,10 @@ func (ls *LoginService) UpsertUser(cmd *models.UpsertUserCommand) error {
|
|||||||
Login: extUser.Login,
|
Login: extUser.Login,
|
||||||
}
|
}
|
||||||
|
|
||||||
err := bus.Dispatch(userQuery)
|
if err := bus.Dispatch(userQuery); err != nil {
|
||||||
if err != models.ErrUserNotFound && err != nil {
|
if err != models.ErrUserNotFound {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
if !cmd.SignupAllowed {
|
if !cmd.SignupAllowed {
|
||||||
log.Warn("Not allowing %s login, user not found in internal user database and allow signup = false", extUser.AuthModule)
|
log.Warn("Not allowing %s login, user not found in internal user database and allow signup = false", extUser.AuthModule)
|
||||||
return ErrInvalidCredentials
|
return ErrInvalidCredentials
|
||||||
@@ -74,7 +73,6 @@ func (ls *LoginService) UpsertUser(cmd *models.UpsertUserCommand) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
cmd.Result = userQuery.Result
|
cmd.Result = userQuery.Result
|
||||||
|
|
||||||
@@ -99,9 +97,7 @@ func (ls *LoginService) UpsertUser(cmd *models.UpsertUserCommand) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = syncOrgRoles(cmd.Result, extUser)
|
if err := syncOrgRoles(cmd.Result, extUser); err != nil {
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,16 +108,15 @@ func (ls *LoginService) UpsertUser(cmd *models.UpsertUserCommand) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = ls.Bus.Dispatch(&models.SyncTeamsCommand{
|
err := ls.Bus.Dispatch(&models.SyncTeamsCommand{
|
||||||
User: cmd.Result,
|
User: cmd.Result,
|
||||||
ExternalUser: extUser,
|
ExternalUser: extUser,
|
||||||
})
|
})
|
||||||
|
if err != nil && err != bus.ErrHandlerNotFound {
|
||||||
if err == bus.ErrHandlerNotFound {
|
return err
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return err
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createUser(extUser *models.ExternalUserInfo) (*models.User, error) {
|
func createUser(extUser *models.ExternalUserInfo) (*models.User, error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user