From 97558f6a6ec4c53fa69035fb430ead209d9c222d Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Fri, 13 Jan 2017 13:53:37 -0500 Subject: PLT-4938 Add app package and move logic over from api package (#4931) * Add app package and move logic over from api package * Change app package functions to return errors * Move non-api tests into app package * Fix merge --- api/team.go | 181 ++++++++++++++++++------------------------------------------ 1 file changed, 55 insertions(+), 126 deletions(-) (limited to 'api/team.go') diff --git a/api/team.go b/api/team.go index c855a515d..a8ed90eb5 100644 --- a/api/team.go +++ b/api/team.go @@ -16,6 +16,7 @@ import ( l4g "github.com/alecthomas/log4go" "github.com/gorilla/mux" + "github.com/mattermost/platform/app" "github.com/mattermost/platform/model" "github.com/mattermost/platform/store" "github.com/mattermost/platform/utils" @@ -61,7 +62,7 @@ func createTeam(c *Context, w http.ResponseWriter, r *http.Request) { var user *model.User if len(c.Session.UserId) > 0 { - uchan := Srv.Store.User().Get(c.Session.UserId) + uchan := app.Srv.Store.User().Get(c.Session.UserId) if result := <-uchan; result.Err != nil { c.Err = result.Err @@ -76,13 +77,14 @@ func createTeam(c *Context, w http.ResponseWriter, r *http.Request) { return } - rteam := CreateTeam(c, team) - if c.Err != nil { + rteam, err := app.CreateTeam(team) + if err != nil { + c.Err = err return } if user != nil { - err := JoinUserToTeam(team, user) + err := app.JoinUserToTeam(team, user) if err != nil { c.Err = err return @@ -92,84 +94,11 @@ func createTeam(c *Context, w http.ResponseWriter, r *http.Request) { w.Write([]byte(rteam.ToJson())) } -func CreateTeam(c *Context, team *model.Team) *model.Team { - if result := <-Srv.Store.Team().Save(team); result.Err != nil { - c.Err = result.Err - return nil - } else { - rteam := result.Data.(*model.Team) - - if _, err := CreateDefaultChannels(c, rteam.Id); err != nil { - c.Err = err - return nil - } - - return rteam - } -} - -func JoinUserToTeamById(teamId string, user *model.User) *model.AppError { - if result := <-Srv.Store.Team().Get(teamId); result.Err != nil { - return result.Err - } else { - return JoinUserToTeam(result.Data.(*model.Team), user) - } -} - -func JoinUserToTeam(team *model.Team, user *model.User) *model.AppError { - - tm := &model.TeamMember{ - TeamId: team.Id, - UserId: user.Id, - Roles: model.ROLE_TEAM_USER.Id, - } - - channelRole := model.ROLE_CHANNEL_USER.Id - - if team.Email == user.Email { - tm.Roles = model.ROLE_TEAM_USER.Id + " " + model.ROLE_TEAM_ADMIN.Id - channelRole = model.ROLE_CHANNEL_USER.Id + " " + model.ROLE_CHANNEL_ADMIN.Id - } - - if etmr := <-Srv.Store.Team().GetMember(team.Id, user.Id); etmr.Err == nil { - // Membership alredy exists. Check if deleted and and update, otherwise do nothing - rtm := etmr.Data.(model.TeamMember) - - // Do nothing if already added - if rtm.DeleteAt == 0 { - return nil - } - - if tmr := <-Srv.Store.Team().UpdateMember(tm); tmr.Err != nil { - return tmr.Err - } - } else { - // Membership appears to be missing. Lets try to add. - if tmr := <-Srv.Store.Team().SaveMember(tm); tmr.Err != nil { - return tmr.Err - } - } - - if uua := <-Srv.Store.User().UpdateUpdateAt(user.Id); uua.Err != nil { - return uua.Err - } - - // Soft error if there is an issue joining the default channels - if err := JoinDefaultChannels(team.Id, user, channelRole); err != nil { - l4g.Error(utils.T("api.user.create_user.joining.error"), user.Id, team.Id, err) - } - - RemoveAllSessionsForUserId(user.Id) - InvalidateCacheForUser(user.Id) - - return nil -} - func LeaveTeam(team *model.Team, user *model.User) *model.AppError { var teamMember model.TeamMember - if result := <-Srv.Store.Team().GetMember(team.Id, user.Id); result.Err != nil { + if result := <-app.Srv.Store.Team().GetMember(team.Id, user.Id); result.Err != nil { return model.NewLocAppError("RemoveUserFromTeam", "api.team.remove_user_from_team.missing.app_error", nil, result.Err.Error()) } else { teamMember = result.Data.(model.TeamMember) @@ -177,7 +106,7 @@ func LeaveTeam(team *model.Team, user *model.User) *model.AppError { var channelList *model.ChannelList - if result := <-Srv.Store.Channel().GetChannels(team.Id, user.Id); result.Err != nil { + if result := <-app.Srv.Store.Channel().GetChannels(team.Id, user.Id); result.Err != nil { if result.Err.Id == "store.sql_channel.get_channels.not_found.app_error" { channelList = &model.ChannelList{} } else { @@ -190,8 +119,8 @@ func LeaveTeam(team *model.Team, user *model.User) *model.AppError { for _, channel := range *channelList { if channel.Type != model.CHANNEL_DIRECT { - InvalidateCacheForChannel(channel.Id) - if result := <-Srv.Store.Channel().RemoveMember(channel.Id, user.Id); result.Err != nil { + app.InvalidateCacheForChannel(channel.Id) + if result := <-app.Srv.Store.Channel().RemoveMember(channel.Id, user.Id); result.Err != nil { return result.Err } } @@ -201,26 +130,26 @@ func LeaveTeam(team *model.Team, user *model.User) *model.AppError { message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_LEAVE_TEAM, team.Id, "", "", nil) message.Add("user_id", user.Id) message.Add("team_id", team.Id) - Publish(message) + app.Publish(message) teamMember.Roles = "" teamMember.DeleteAt = model.GetMillis() - if result := <-Srv.Store.Team().UpdateMember(&teamMember); result.Err != nil { + if result := <-app.Srv.Store.Team().UpdateMember(&teamMember); result.Err != nil { return result.Err } - if uua := <-Srv.Store.User().UpdateUpdateAt(user.Id); uua.Err != nil { + if uua := <-app.Srv.Store.User().UpdateUpdateAt(user.Id); uua.Err != nil { return uua.Err } // delete the preferences that set the last channel used in the team and other team specific preferences - if result := <-Srv.Store.Preference().DeleteCategory(user.Id, team.Id); result.Err != nil { + if result := <-app.Srv.Store.Preference().DeleteCategory(user.Id, team.Id); result.Err != nil { return result.Err } - RemoveAllSessionsForUserId(user.Id) - InvalidateCacheForUser(user.Id) + app.RemoveAllSessionsForUserId(user.Id) + app.InvalidateCacheForUser(user.Id) return nil } @@ -235,7 +164,7 @@ func isTeamCreationAllowed(c *Context, email string) bool { } c.Err = nil - if result := <-Srv.Store.User().GetByEmail(email); result.Err == nil { + if result := <-app.Srv.Store.User().GetByEmail(email); result.Err == nil { user := result.Data.(*model.User) if len(user.AuthService) > 0 && len(*user.AuthData) > 0 { return true @@ -263,7 +192,7 @@ func isTeamCreationAllowed(c *Context, email string) bool { } func GetAllTeamListings(c *Context, w http.ResponseWriter, r *http.Request) { - if result := <-Srv.Store.Team().GetAllTeamListing(); result.Err != nil { + if result := <-app.Srv.Store.Team().GetAllTeamListing(); result.Err != nil { c.Err = result.Err return } else { @@ -286,10 +215,10 @@ func GetAllTeamListings(c *Context, w http.ResponseWriter, r *http.Request) { func getAll(c *Context, w http.ResponseWriter, r *http.Request) { var tchan store.StoreChannel if HasPermissionToContext(c, model.PERMISSION_MANAGE_SYSTEM) { - tchan = Srv.Store.Team().GetAll() + tchan = app.Srv.Store.Team().GetAll() } else { c.Err = nil - tchan = Srv.Store.Team().GetTeamsByUserId(c.Session.UserId) + tchan = app.Srv.Store.Team().GetTeamsByUserId(c.Session.UserId) } if result := <-tchan; result.Err != nil { @@ -310,7 +239,7 @@ func revokeAllSessions(c *Context, w http.ResponseWriter, r *http.Request) { props := model.MapFromJson(r.Body) id := props["id"] - if result := <-Srv.Store.Session().Get(id); result.Err != nil { + if result := <-app.Srv.Store.Session().Get(id); result.Err != nil { c.Err = result.Err return } else { @@ -321,11 +250,11 @@ func revokeAllSessions(c *Context, w http.ResponseWriter, r *http.Request) { if session.IsOAuth { RevokeAccessToken(session.Token) } else { - if result := <-Srv.Store.Session().Remove(session.Id); result.Err != nil { + if result := <-app.Srv.Store.Session().Remove(session.Id); result.Err != nil { c.Err = result.Err return } else { - RemoveAllSessionsForUserId(session.UserId) + app.RemoveAllSessionsForUserId(session.UserId) w.Write([]byte(model.MapToJson(props))) return } @@ -354,8 +283,8 @@ func inviteMembers(c *Context, w http.ResponseWriter, r *http.Request) { } } - tchan := Srv.Store.Team().Get(c.TeamId) - uchan := Srv.Store.User().Get(c.Session.UserId) + tchan := app.Srv.Store.Team().Get(c.TeamId) + uchan := app.Srv.Store.User().Get(c.Session.UserId) var team *model.Team if result := <-tchan; result.Err != nil { @@ -392,8 +321,8 @@ func addUserToTeam(c *Context, w http.ResponseWriter, r *http.Request) { return } - tchan := Srv.Store.Team().Get(c.TeamId) - uchan := Srv.Store.User().Get(userId) + tchan := app.Srv.Store.Team().Get(c.TeamId) + uchan := app.Srv.Store.User().Get(userId) var team *model.Team if result := <-tchan; result.Err != nil { @@ -415,7 +344,7 @@ func addUserToTeam(c *Context, w http.ResponseWriter, r *http.Request) { return } - err := JoinUserToTeam(team, user) + err := app.JoinUserToTeam(team, user) if err != nil { c.Err = err return @@ -433,8 +362,8 @@ func removeUserFromTeam(c *Context, w http.ResponseWriter, r *http.Request) { return } - tchan := Srv.Store.Team().Get(c.TeamId) - uchan := Srv.Store.User().Get(userId) + tchan := app.Srv.Store.Team().Get(c.TeamId) + uchan := app.Srv.Store.User().Get(userId) var team *model.Team if result := <-tchan; result.Err != nil { @@ -494,7 +423,7 @@ func addUserToTeamFromInvite(c *Context, w http.ResponseWriter, r *http.Request) teamId = props["id"] // try to load the team to make sure it exists - if result := <-Srv.Store.Team().Get(teamId); result.Err != nil { + if result := <-app.Srv.Store.Team().Get(teamId); result.Err != nil { c.Err = result.Err return } else { @@ -503,7 +432,7 @@ func addUserToTeamFromInvite(c *Context, w http.ResponseWriter, r *http.Request) } if len(inviteId) > 0 { - if result := <-Srv.Store.Team().GetByInviteId(inviteId); result.Err != nil { + if result := <-app.Srv.Store.Team().GetByInviteId(inviteId); result.Err != nil { c.Err = result.Err return } else { @@ -517,7 +446,7 @@ func addUserToTeamFromInvite(c *Context, w http.ResponseWriter, r *http.Request) return } - uchan := Srv.Store.User().Get(c.Session.UserId) + uchan := app.Srv.Store.User().Get(c.Session.UserId) var user *model.User if result := <-uchan; result.Err != nil { @@ -530,7 +459,7 @@ func addUserToTeamFromInvite(c *Context, w http.ResponseWriter, r *http.Request) tm := c.Session.GetTeamByTeamId(teamId) if tm == nil { - err := JoinUserToTeam(team, user) + err := app.JoinUserToTeam(team, user) if err != nil { c.Err = err return @@ -543,7 +472,7 @@ func addUserToTeamFromInvite(c *Context, w http.ResponseWriter, r *http.Request) } func FindTeamByName(name string) bool { - if result := <-Srv.Store.Team().GetByName(name); result.Err != nil { + if result := <-app.Srv.Store.Team().GetByName(name); result.Err != nil { return false } else { return true @@ -568,7 +497,7 @@ func getTeamByName(c *Context, w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) teamname := params["team_name"] - if result := <-Srv.Store.Team().GetByName(teamname); result.Err != nil { + if result := <-app.Srv.Store.Team().GetByName(teamname); result.Err != nil { c.Err = result.Err return } else { @@ -589,7 +518,7 @@ func getMyTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) { if len(c.Session.TeamMembers) > 0 { w.Write([]byte(model.TeamMembersToJson(c.Session.TeamMembers))) } else { - if result := <-Srv.Store.Team().GetTeamsForUser(c.Session.UserId); result.Err != nil { + if result := <-app.Srv.Store.Team().GetTeamsForUser(c.Session.UserId); result.Err != nil { c.Err = result.Err return } else { @@ -602,7 +531,7 @@ func getMyTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) { func getMyTeamsUnread(c *Context, w http.ResponseWriter, r *http.Request) { teamId := r.URL.Query().Get("id") - if result := <-Srv.Store.Team().GetTeamsUnreadForUser(teamId, c.Session.UserId); result.Err != nil { + if result := <-app.Srv.Store.Team().GetTeamsUnreadForUser(teamId, c.Session.UserId); result.Err != nil { c.Err = result.Err return } else { @@ -696,7 +625,7 @@ func updateTeam(c *Context, w http.ResponseWriter, r *http.Request) { } var oldTeam *model.Team - if result := <-Srv.Store.Team().Get(team.Id); result.Err != nil { + if result := <-app.Srv.Store.Team().Get(team.Id); result.Err != nil { c.Err = result.Err return } else { @@ -711,7 +640,7 @@ func updateTeam(c *Context, w http.ResponseWriter, r *http.Request) { oldTeam.AllowedDomains = team.AllowedDomains //oldTeam.Type = team.Type - if result := <-Srv.Store.Team().Update(oldTeam); result.Err != nil { + if result := <-app.Srv.Store.Team().Update(oldTeam); result.Err != nil { c.Err = result.Err return } @@ -720,7 +649,7 @@ func updateTeam(c *Context, w http.ResponseWriter, r *http.Request) { message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_UPDATE_TEAM, "", "", "", nil) message.Add("team", oldTeam.ToJson()) - go Publish(message) + go app.Publish(message) w.Write([]byte(oldTeam.ToJson())) } @@ -734,7 +663,7 @@ func updateMemberRoles(c *Context, w http.ResponseWriter, r *http.Request) { return } - mchan := Srv.Store.Team().GetTeamsForUser(userId) + mchan := app.Srv.Store.Team().GetTeamsForUser(userId) teamId := c.TeamId @@ -769,12 +698,12 @@ func updateMemberRoles(c *Context, w http.ResponseWriter, r *http.Request) { member.Roles = newRoles - if result := <-Srv.Store.Team().UpdateMember(member); result.Err != nil { + if result := <-app.Srv.Store.Team().UpdateMember(member); result.Err != nil { c.Err = result.Err return } - RemoveAllSessionsForUserId(userId) + app.RemoveAllSessionsForUserId(userId) rdata := map[string]string{} rdata["status"] = "ok" @@ -783,19 +712,19 @@ func updateMemberRoles(c *Context, w http.ResponseWriter, r *http.Request) { func PermanentDeleteTeam(team *model.Team) *model.AppError { team.DeleteAt = model.GetMillis() - if result := <-Srv.Store.Team().Update(team); result.Err != nil { + if result := <-app.Srv.Store.Team().Update(team); result.Err != nil { return result.Err } - if result := <-Srv.Store.Channel().PermanentDeleteByTeam(team.Id); result.Err != nil { + if result := <-app.Srv.Store.Channel().PermanentDeleteByTeam(team.Id); result.Err != nil { return result.Err } - if result := <-Srv.Store.Team().RemoveAllMembersByTeam(team.Id); result.Err != nil { + if result := <-app.Srv.Store.Team().RemoveAllMembersByTeam(team.Id); result.Err != nil { return result.Err } - if result := <-Srv.Store.Team().PermanentDelete(team.Id); result.Err != nil { + if result := <-app.Srv.Store.Team().PermanentDelete(team.Id); result.Err != nil { return result.Err } @@ -808,7 +737,7 @@ func getMyTeam(c *Context, w http.ResponseWriter, r *http.Request) { return } - if result := <-Srv.Store.Team().Get(c.TeamId); result.Err != nil { + if result := <-app.Srv.Store.Team().Get(c.TeamId); result.Err != nil { c.Err = result.Err return } else if HandleEtag(result.Data.(*model.Team).Etag(), "Get My Team", w, r) { @@ -827,8 +756,8 @@ func getTeamStats(c *Context, w http.ResponseWriter, r *http.Request) { } } - tchan := Srv.Store.Team().GetTotalMemberCount(c.TeamId) - achan := Srv.Store.Team().GetActiveMemberCount(c.TeamId) + tchan := app.Srv.Store.Team().GetTotalMemberCount(c.TeamId) + achan := app.Srv.Store.Team().GetActiveMemberCount(c.TeamId) stats := &model.TeamStats{} stats.TeamId = c.TeamId @@ -925,7 +854,7 @@ func getInviteInfo(c *Context, w http.ResponseWriter, r *http.Request) { m := model.MapFromJson(r.Body) inviteId := m["invite_id"] - if result := <-Srv.Store.Team().GetByInviteId(inviteId); result.Err != nil { + if result := <-app.Srv.Store.Team().GetByInviteId(inviteId); result.Err != nil { c.Err = result.Err return } else { @@ -965,7 +894,7 @@ func getTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) { } } - if result := <-Srv.Store.Team().GetMembers(c.TeamId, offset, limit); result.Err != nil { + if result := <-app.Srv.Store.Team().GetMembers(c.TeamId, offset, limit); result.Err != nil { c.Err = result.Err return } else { @@ -990,7 +919,7 @@ func getTeamMember(c *Context, w http.ResponseWriter, r *http.Request) { } } - if result := <-Srv.Store.Team().GetMember(c.TeamId, userId); result.Err != nil { + if result := <-app.Srv.Store.Team().GetMember(c.TeamId, userId); result.Err != nil { c.Err = result.Err return } else { @@ -1013,7 +942,7 @@ func getTeamMembersByIds(c *Context, w http.ResponseWriter, r *http.Request) { } } - if result := <-Srv.Store.Team().GetMembersByIds(c.TeamId, userIds); result.Err != nil { + if result := <-app.Srv.Store.Team().GetMembersByIds(c.TeamId, userIds); result.Err != nil { c.Err = result.Err return } else { -- cgit v1.2.3-1-g7c22