summaryrefslogtreecommitdiffstats
path: root/api/team.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/team.go')
-rw-r--r--api/team.go181
1 files changed, 55 insertions, 126 deletions
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 {