func AdminCreateUser(c *middleware.Context, form dtos.AdminCreateUserForm) { cmd := m.CreateUserCommand{ Login: form.Login, Email: form.Email, Password: form.Password, Name: form.Name, } if len(cmd.Login) == 0 { cmd.Login = cmd.Email if len(cmd.Login) == 0 { c.JsonApiErr(400, "Validation error, need specify either username or email", nil) return } } if len(cmd.Password) < 4 { c.JsonApiErr(400, "Password is missing or too short", nil) return } if err := bus.Dispatch(&cmd); err != nil { c.JsonApiErr(500, "failed to create user", err) return } metrics.M_Api_Admin_User_Create.Inc(1) c.JsonOK("User created") }
func EnsureAdminUser() { statsQuery := m.GetSystemStatsQuery{} if err := bus.Dispatch(&statsQuery); err != nil { log.Fatal(3, "Could not determine if admin user exists: %v", err) return } if statsQuery.Result.UserCount > 0 { return } cmd := m.CreateUserCommand{} cmd.Login = setting.AdminUser cmd.Email = setting.AdminUser + "@localhost" cmd.Password = setting.AdminPassword cmd.IsAdmin = true if err := bus.Dispatch(&cmd); err != nil { log.Error(3, "Failed to create default admin user", err) return } log.Info("Created default admin user: %v", setting.AdminUser) }
func LoginUcenterCallback(c *middleware.Context) { token := c.QueryStrings("token") if len(token) == 0 { c.Handle(500, "ucenter api request error", errors.New("token params error")) return } uclient := ucenter.NewClient(setting.Ucenter.Api_Url, setting.Ucenter.Api_Key, setting.Ucenter.Api_Secret) if uid, err := service.CheckToken(uclient, strings.Join(token, "")); err != nil { c.Handle(500, "ucenter api request error", err) return } else { t := reflect.TypeOf(uid) switch t.Kind() { case reflect.Bool: c.Handle(500, "ucenter api request error", errors.New("token is expired or invaild")) return case reflect.Float64: var uidFloat float64 = uid.(float64) var uidInt int64 = int64(uidFloat) if user, err := service.GetUserById(uclient, service.Uid(uidInt)); err != nil { c.Handle(500, "ucenter api request error", err) return } else { //都是登录状态了 //首先查询下用户是否在数据库内 queryUser: userQuery := m.GetUserByLoginQuery{LoginOrEmail: user.Name} err := bus.Dispatch(&userQuery) if err != nil { //如果用户不存在,则插入数据 cmd := m.CreateUserCommand{} cmd.Login = user.Name cmd.Email = user.Email cmd.Password = setting.AdminPassword //暂用管理员密码吧 cmd.IsAdmin = false if err := bus.Dispatch(&cmd); err != nil { log.Error(3, "Failed to create user"+user.Name, err) return } log.Info("Created user: %v", user.Name) goto queryUser } userModel := userQuery.Result //记录状态 loginUserWithUser(userModel, c) //跳转页面 c.Redirect(setting.AppSubUrl + "/") } } } }
func getCreateUserCommandForProxyAuth(headerVal string) *m.CreateUserCommand { cmd := m.CreateUserCommand{} if setting.AuthProxyHeaderProperty == "username" { cmd.Login = headerVal cmd.Email = headerVal } else if setting.AuthProxyHeaderProperty == "email" { cmd.Email = headerVal cmd.Login = headerVal } else { panic("Auth proxy header property invalid") } return &cmd }
// POST /api/user/signup func SignUp(c *middleware.Context, cmd m.CreateUserCommand) Response { if !setting.AllowUserSignUp { return ApiError(401, "User signup is disabled", nil) } cmd.Login = cmd.Email if err := bus.Dispatch(&cmd); err != nil { return ApiError(500, "failed to create user", err) } user := cmd.Result bus.Publish(&events.UserSignedUp{ Id: user.Id, Name: user.Name, Email: user.Email, Login: user.Login, }) loginUserWithUser(&user, c) metrics.M_Api_User_SignUp.Inc(1) return ApiSuccess("User created and logged in") }
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 }) }