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 UpdateOrgUser(cmd *m.UpdateOrgUserCommand) error { return inTransaction(func(sess *xorm.Session) error { var orgUser m.OrgUser exists, err := sess.Where("org_id=? AND user_id=?", cmd.OrgId, cmd.UserId).Get(&orgUser) if err != nil { return err } if !exists { return m.ErrOrgUserNotFound } orgUser.Role = cmd.Role orgUser.Updated = time.Now() _, err = sess.Id(orgUser.Id).Update(&orgUser) if err != nil { return err } return validateOneAdminLeftInOrg(cmd.OrgId, sess) }) }