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 inviteExistingUserToOrg(c *middleware.Context, user *m.User, inviteDto *dtos.AddInviteForm) Response { // user exists, add org role createOrgUserCmd := m.AddOrgUserCommand{OrgId: c.OrgId, UserId: user.Id, Role: inviteDto.Role} if err := bus.Dispatch(&createOrgUserCmd); err != nil { if err == m.ErrOrgUserAlreadyAdded { return ApiError(412, fmt.Sprintf("User %s is already added to organization", inviteDto.LoginOrEmail), err) } return ApiError(500, "Error while trying to create org user", err) } else { if !inviteDto.SkipEmails && util.IsEmail(user.Email) { emailCmd := m.SendEmailCommand{ To: []string{user.Email}, Template: "invited_to_org.html", Data: map[string]interface{}{ "Name": user.NameOrFallback(), "OrgName": c.OrgName, "InvitedBy": util.StringsFallback3(c.Name, c.Email, c.Login), }, } if err := bus.Dispatch(&emailCmd); err != nil { return ApiError(500, "Failed to send email invited_to_org", err) } } return ApiSuccess(fmt.Sprintf("Existing Grafana user %s added to org %s", user.NameOrFallback(), c.OrgName)) } }
func SetUsingOrg(cmd *m.SetUsingOrgCommand) error { return inTransaction(func(sess *xorm.Session) error { user := m.User{} sess.Id(cmd.UserId).Get(&user) user.OrgId = cmd.OrgId _, err := sess.Id(user.Id).Update(&user) return err }) }
func setDefaultTemplateData(data map[string]interface{}, u *m.User) { data["AppUrl"] = setting.AppUrl data["BuildVersion"] = setting.BuildVersion data["BuildStamp"] = setting.BuildStamp data["EmailCodeValidHours"] = setting.EmailCodeValidMinutes / 60 data["Subject"] = map[string]interface{}{} if u != nil { data["Name"] = u.NameOrFallback() } }
func UpdateUserPermissions(cmd *m.UpdateUserPermissionsCommand) error { return inTransaction(func(sess *xorm.Session) error { user := m.User{} sess.Id(cmd.UserId).Get(&user) user.IsAdmin = cmd.IsGrafanaAdmin sess.UseBool("is_admin") _, err := sess.Id(user.Id).Update(&user) return err }) }