support setting default org role when adding user via grafana.net auth

This commit is contained in:
Dan Cech 2016-09-20 12:36:36 -04:00
parent da95a23080
commit 630a8ed8aa
5 changed files with 23 additions and 14 deletions

View File

@ -83,10 +83,11 @@ func OAuthLogin(ctx *middleware.Context) {
return return
} }
cmd := m.CreateUserCommand{ cmd := m.CreateUserCommand{
Login: userInfo.Email, Login: userInfo.Email,
Email: userInfo.Email, Email: userInfo.Email,
Name: userInfo.Name, Name: userInfo.Name,
Company: userInfo.Company, Company: userInfo.Company,
DefaultOrgRole: userInfo.Role,
} }
if err = bus.Dispatch(&cmd); err != nil { if err = bus.Dispatch(&cmd); err != nil {

View File

@ -44,15 +44,16 @@ func (u *User) NameOrFallback() string {
// COMMANDS // COMMANDS
type CreateUserCommand struct { type CreateUserCommand struct {
Email string Email string
Login string Login string
Name string Name string
Company string Company string
OrgName string OrgName string
Password string Password string
EmailVerified bool EmailVerified bool
IsAdmin bool IsAdmin bool
SkipOrgSetup bool SkipOrgSetup bool
DefaultOrgRole string
Result User Result User
} }

View File

@ -128,7 +128,11 @@ func CreateUser(cmd *m.CreateUserCommand) error {
} }
if setting.AutoAssignOrg && !user.IsAdmin { if setting.AutoAssignOrg && !user.IsAdmin {
orgUser.Role = m.RoleType(setting.AutoAssignOrgRole) if len(cmd.DefaultOrgRole) > 0 {
orgUser.Role = m.RoleType(cmd.DefaultOrgRole)
} else {
orgUser.Role = m.RoleType(setting.AutoAssignOrgRole)
}
} }
if _, err = sess.Insert(&orgUser); err != nil { if _, err = sess.Insert(&orgUser); err != nil {

View File

@ -83,6 +83,7 @@ func (s *SocialGrafanaNet) UserInfo(token *oauth2.Token) (*BasicUserInfo, error)
Id int `json:"id"` Id int `json:"id"`
Name string `json:"login"` Name string `json:"login"`
Email string `json:"email"` Email string `json:"email"`
Role string `json:"role"`
} }
var err error var err error
@ -102,6 +103,7 @@ func (s *SocialGrafanaNet) UserInfo(token *oauth2.Token) (*BasicUserInfo, error)
Identity: strconv.Itoa(data.Id), Identity: strconv.Itoa(data.Id),
Name: data.Name, Name: data.Name,
Email: data.Email, Email: data.Email,
Role: data.Role,
} }
if !s.IsOrganizationMember(client) { if !s.IsOrganizationMember(client) {

View File

@ -15,6 +15,7 @@ type BasicUserInfo struct {
Email string Email string
Login string Login string
Company string Company string
Role string
} }
type SocialConnector interface { type SocialConnector interface {