func CreateUser(c *Context, team *model.Team, user *model.User) *model.User { channelRole := "" if team.Email == user.Email { user.Roles = model.ROLE_ADMIN channelRole = model.CHANNEL_ROLE_ADMIN } else { user.Roles = "" } user.MakeNonNil() if len(user.Props["theme"]) == 0 { user.AddProp("theme", utils.Cfg.TeamSettings.DefaultThemeColor) } if result := <-Srv.Store.User().Save(user); result.Err != nil { c.Err = result.Err return nil } else { ruser := result.Data.(*model.User) // Do not error if user cannot be added to the town-square channel if cresult := <-Srv.Store.Channel().GetByName(team.Id, "town-square"); cresult.Err != nil { l4g.Error("Failed to get town-square err=%v", cresult.Err) } else { cm := &model.ChannelMember{ChannelId: cresult.Data.(*model.Channel).Id, UserId: ruser.Id, NotifyLevel: model.CHANNEL_NOTIFY_ALL, Roles: channelRole} if cmresult := <-Srv.Store.Channel().SaveMember(cm); cmresult.Err != nil { l4g.Error("Failed to add member town-square err=%v", cmresult.Err) } } //fireAndForgetWelcomeEmail(strings.Split(ruser.FullName, " ")[0], ruser.Email, team.Name, c.TeamUrl+"/channels/town-square") if user.EmailVerified { if cresult := <-Srv.Store.User().VerifyEmail(ruser.Id); cresult.Err != nil { l4g.Error("Failed to get town-square err=%v", cresult.Err) } } else { FireAndForgetVerifyEmail(result.Data.(*model.User).Id, strings.Split(ruser.FullName, " ")[0], ruser.Email, team.Name, c.TeamUrl) } ruser.Sanitize(map[string]bool{}) //This message goes to every channel, so the channelId is irrelevant message := model.NewMessage(team.Id, "", ruser.Id, model.ACTION_NEW_USER) store.PublishAndForget(message) return ruser } }
func CreateUser(c *Context, team *model.Team, user *model.User) *model.User { channelRole := "" if team.Email == user.Email { user.Roles = model.ROLE_TEAM_ADMIN channelRole = model.CHANNEL_ROLE_ADMIN } else { user.Roles = "" } user.MakeNonNil() if len(user.Props["theme"]) == 0 { user.AddProp("theme", utils.Cfg.TeamSettings.DefaultThemeColor) } if result := <-Srv.Store.User().Save(user); result.Err != nil { c.Err = result.Err l4g.Error("Couldn't save the user err=%v", result.Err) return nil } else { ruser := result.Data.(*model.User) // Soft error if there is an issue joining the default channels if err := JoinDefaultChannels(ruser, channelRole); err != nil { l4g.Error("Encountered an issue joining default channels user_id=%s, team_id=%s, err=%v", ruser.Id, ruser.TeamId, err) } //fireAndForgetWelcomeEmail(ruser.FirstName, ruser.Email, team.Name, c.TeamURL+"/channels/town-square") if user.EmailVerified { if cresult := <-Srv.Store.User().VerifyEmail(ruser.Id); cresult.Err != nil { l4g.Error("Failed to set email verified err=%v", cresult.Err) } } else { FireAndForgetVerifyEmail(result.Data.(*model.User).Id, ruser.Email, team.Name, team.DisplayName, c.GetSiteURL(), c.GetTeamURLFromTeam(team)) } ruser.Sanitize(map[string]bool{}) // This message goes to every channel, so the channelId is irrelevant message := model.NewMessage(team.Id, "", ruser.Id, model.ACTION_NEW_USER) PublishAndForget(message) return ruser } }
func ImportUser(user *model.User) *model.User { user.MakeNonNil() if len(user.Props["theme"]) == 0 { user.AddProp("theme", utils.Cfg.TeamSettings.DefaultThemeColor) } if result := <-Srv.Store.User().Save(user); result.Err != nil { l4g.Error("Error saving user. err=%v", result.Err) return nil } else { ruser := result.Data.(*model.User) if err := JoinDefaultChannels(ruser, ""); err != nil { l4g.Error("Encountered an issue joining default channels user_id=%s, team_id=%s, err=%v", ruser.Id, ruser.TeamId, err) } if cresult := <-Srv.Store.User().VerifyEmail(ruser.Id); cresult.Err != nil { l4g.Error("Failed to set email verified err=%v", cresult.Err) } return ruser } }