func CreateUser(cmd *m.CreateUserCommand) error { return inTransaction2(func(sess *session) error { orgId, err := getOrgIdForNewUser(cmd.Email, sess) if err != nil { return err } // create user user := m.User{ Email: cmd.Email, Name: cmd.Name, Login: cmd.Login, Company: cmd.Company, IsAdmin: cmd.IsAdmin, OrgId: orgId, Created: time.Now(), Updated: time.Now(), } if len(cmd.Password) > 0 { user.Salt = util.GetRandomString(10) user.Rands = util.GetRandomString(10) user.Password = util.EncodePassword(cmd.Password, user.Salt) } sess.UseBool("is_admin") if _, err := sess.Insert(&user); err != nil { return err } // create org user link orgUser := m.OrgUser{ OrgId: orgId, UserId: user.Id, Role: m.ROLE_ADMIN, Created: time.Now(), Updated: time.Now(), } if setting.AutoAssignOrg && !user.IsAdmin { orgUser.Role = m.RoleType(setting.AutoAssignOrgRole) } if _, err = sess.Insert(&orgUser); err != nil { return err } sess.publishAfterCommit(&events.UserCreated{ Timestamp: user.Created, Id: user.Id, Name: user.Name, Login: user.Login, Email: user.Email, }) cmd.Result = user return nil }) }
func (pb *PluginBase) registerPlugin(pluginDir string) error { if _, exists := Plugins[pb.Id]; exists { return errors.New("Plugin with same id already exists") } if !strings.HasPrefix(pluginDir, setting.StaticRootPath) { plog.Info("Registering plugin", "name", pb.Name) } if len(pb.Dependencies.Plugins) == 0 { pb.Dependencies.Plugins = []PluginDependencyItem{} } if pb.Dependencies.GrafanaVersion == "" { pb.Dependencies.GrafanaVersion = "*" } for _, include := range pb.Includes { if include.Role == "" { include.Role = m.RoleType(m.ROLE_VIEWER) } } pb.PluginDir = pluginDir Plugins[pb.Id] = pb return nil }
func (a *keystoneAuther) getRole(user_roles []string) m.RoleType { role_map := make(map[string]bool) for _, role := range user_roles { role_map[role] = true } role_order := []m.RoleType{m.ROLE_ADMIN, m.ROLE_EDITOR, m.ROLE_READ_ONLY_EDITOR, m.ROLE_VIEWER} for _, role_type := range role_order { for _, role := range a.roles[role_type] { if _, ok := role_map[role]; ok { return role_type } } } return m.RoleType(a.defaultrole) }
func initContextWithAnonymousUser(ctx *Context) bool { if !setting.AnonymousEnabled { return false } orgQuery := m.GetOrgByNameQuery{Name: setting.AnonymousOrgName} if err := bus.Dispatch(&orgQuery); err != nil { log.Error(3, "Anonymous access organization error: '%s': %s", setting.AnonymousOrgName, err) return false } else { ctx.IsSignedIn = false ctx.AllowAnonymous = true ctx.SignedInUser = &m.SignedInUser{} ctx.OrgRole = m.RoleType(setting.AnonymousOrgRole) ctx.OrgId = orgQuery.Result.Id ctx.OrgName = orgQuery.Result.Name return true } }