func cmdCreateUser() { if flagCmdCreateUser { if len(flagEmail) == 0 { fmt.Fprintln(os.Stderr, "flag needs an argument: -email") flag.Usage() os.Exit(1) } if len(flagPassword) == 0 { fmt.Fprintln(os.Stderr, "flag needs an argument: -password") flag.Usage() os.Exit(1) } var team *model.Team user := &model.User{} user.Email = flagEmail user.Password = flagPassword if len(flagUsername) == 0 { splits := strings.Split(strings.Replace(flagEmail, "@", " ", -1), " ") user.Username = splits[0] } else { user.Username = flagUsername } if len(flagTeamName) > 0 { if result := <-api.Srv.Store.Team().GetByName(flagTeamName); result.Err != nil { l4g.Error("%v", result.Err) flushLogAndExit(1) } else { team = result.Data.(*model.Team) } } ruser, err := api.CreateUser(user) if err != nil { if err.Id != "store.sql_user.save.email_exists.app_error" { l4g.Error("%v", err) flushLogAndExit(1) } } if team != nil { err = api.JoinUserToTeam(team, ruser) if err != nil { l4g.Error("%v", err) flushLogAndExit(1) } } os.Exit(0) } }
func cmdCreateUser() { if flagCmdCreateUser { if len(flagTeamName) == 0 { fmt.Fprintln(os.Stderr, "flag needs an argument: -team_name") flag.Usage() os.Exit(1) } if len(flagEmail) == 0 { fmt.Fprintln(os.Stderr, "flag needs an argument: -email") flag.Usage() os.Exit(1) } if len(flagPassword) == 0 { fmt.Fprintln(os.Stderr, "flag needs an argument: -password") flag.Usage() os.Exit(1) } c := &api.Context{} c.RequestId = model.NewId() c.IpAddress = "cmd_line" var team *model.Team user := &model.User{} user.Email = flagEmail user.Password = flagPassword splits := strings.Split(strings.Replace(flagEmail, "@", " ", -1), " ") user.Username = splits[0] if result := <-api.Srv.Store.Team().GetByName(flagTeamName); result.Err != nil { l4g.Error("%v", result.Err) flushLogAndExit(1) } else { team = result.Data.(*model.Team) user.TeamId = team.Id } api.CreateUser(c, team, user) if c.Err != nil { if c.Err.Message != "An account with that email already exists." { l4g.Error("%v", c.Err) flushLogAndExit(1) } } os.Exit(0) } }
func userCreateCmdF(cmd *cobra.Command, args []string) error { initDBCommandContextCobra(cmd) username, erru := cmd.Flags().GetString("username") if erru != nil || username == "" { return errors.New("Username is required") } email, erre := cmd.Flags().GetString("email") if erre != nil || email == "" { return errors.New("Email is required") } password, errp := cmd.Flags().GetString("password") if errp != nil || password == "" { return errors.New("Password is required") } nickname, _ := cmd.Flags().GetString("nickname") firstname, _ := cmd.Flags().GetString("firstname") lastname, _ := cmd.Flags().GetString("lastname") locale, _ := cmd.Flags().GetString("locale") system_admin, _ := cmd.Flags().GetBool("system_admin") user := &model.User{ Username: username, Email: email, Password: password, Nickname: nickname, FirstName: firstname, LastName: lastname, Locale: locale, } ruser, err := api.CreateUser(user) if err != nil { return errors.New("Unable to create user. Error: " + err.Error()) } if system_admin { api.UpdateUserRoles(ruser, "system_user system_admin") } CommandPrettyPrintln("Created User") return nil }
func signupCompleteOAuth(c *api.Context, w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) service := params["service"] code := r.URL.Query().Get("code") state := r.URL.Query().Get("state") uri := c.GetSiteURL() + "/signup/" + service + "/complete" if body, team, err := api.AuthorizeOAuthUser(service, code, state, uri); err != nil { c.Err = err return } else { var user *model.User if service == model.USER_AUTH_SERVICE_GITLAB { glu := model.GitLabUserFromJson(body) user = model.UserFromGitLabUser(glu) } if user == nil { c.Err = model.NewAppError("signupCompleteOAuth", "Could not create user out of "+service+" user object", "") return } suchan := api.Srv.Store.User().GetByAuth(team.Id, user.AuthData, service) euchan := api.Srv.Store.User().GetByEmail(team.Id, user.Email) if team.Email == "" { team.Email = user.Email if result := <-api.Srv.Store.Team().Update(team); result.Err != nil { c.Err = result.Err return } } else { found := true count := 0 for found { if found = api.IsUsernameTaken(user.Username, team.Id); c.Err != nil { return } else if found { user.Username = user.Username + strconv.Itoa(count) count += 1 } } } if result := <-suchan; result.Err == nil { c.Err = model.NewAppError("signupCompleteOAuth", "This "+service+" account has already been used to sign up for team "+team.DisplayName, "email="+user.Email) return } if result := <-euchan; result.Err == nil { c.Err = model.NewAppError("signupCompleteOAuth", "Team "+team.DisplayName+" already has a user with the email address attached to your "+service+" account", "email="+user.Email) return } user.TeamId = team.Id user.EmailVerified = true ruser := api.CreateUser(c, team, user) if c.Err != nil { return } api.Login(c, w, r, ruser, "") if c.Err != nil { return } root(c, w, r) } }