Migrate all the api4 to handle errors in idiomatic way (#9143)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
1f168263a2
Коммит
d81a61398d
@@ -19,13 +19,15 @@ func (api *API) InitBrand() {
|
|||||||
func getBrandImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getBrandImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
// No permission check required
|
// No permission check required
|
||||||
|
|
||||||
if img, err := c.App.GetBrandImage(); err != nil {
|
img, err := c.App.GetBrandImage()
|
||||||
|
if err != nil {
|
||||||
w.WriteHeader(http.StatusNotFound)
|
w.WriteHeader(http.StatusNotFound)
|
||||||
w.Write(nil)
|
w.Write(nil)
|
||||||
} else {
|
return
|
||||||
w.Header().Set("Content-Type", "image/png")
|
|
||||||
w.Write(img)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Header().Set("Content-Type", "image/png")
|
||||||
|
w.Write(img)
|
||||||
}
|
}
|
||||||
|
|
||||||
func uploadBrandImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
func uploadBrandImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@@ -202,7 +202,9 @@ func executeCommand(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else if channel.Type != model.CHANNEL_DIRECT && channel.Type != model.CHANNEL_GROUP {
|
}
|
||||||
|
|
||||||
|
if channel.Type != model.CHANNEL_DIRECT && channel.Type != model.CHANNEL_GROUP {
|
||||||
// if this isn't a DM or GM, the team id is implicitly taken from the channel so that slash commands created on
|
// if this isn't a DM or GM, the team id is implicitly taken from the channel so that slash commands created on
|
||||||
// some other team can't be run against this one
|
// some other team can't be run against this one
|
||||||
commandArgs.TeamId = channel.TeamId
|
commandArgs.TeamId = channel.TeamId
|
||||||
|
|||||||
@@ -12,13 +12,13 @@ func (api *API) InitDataRetention() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getPolicy(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getPolicy(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
// No permission check required.
|
// No permission check required.
|
||||||
|
|
||||||
if policy, err := c.App.GetDataRetentionPolicy(); err != nil {
|
policy, err := c.App.GetDataRetentionPolicy()
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(policy.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(policy.ToJson()))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,9 +92,9 @@ func createEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(newEmoji.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(newEmoji.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getEmojiList(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getEmojiList(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -113,9 +113,9 @@ func getEmojiList(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.EmojiListToJson(listEmoji)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.EmojiListToJson(listEmoji)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
|
func deleteEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -173,9 +173,9 @@ func deleteEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
ReturnStatusOK(w)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReturnStatusOK(w)
|
||||||
}
|
}
|
||||||
|
|
||||||
func getEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -193,9 +193,9 @@ func getEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(emoji.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(emoji.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getEmojiByName(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getEmojiByName(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -208,9 +208,9 @@ func getEmojiByName(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(emoji.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(emoji.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getEmojiImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getEmojiImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -256,9 +256,9 @@ func searchEmojis(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.EmojiListToJson(emojis)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.EmojiListToJson(emojis)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func autocompleteEmojis(c *Context, w http.ResponseWriter, r *http.Request) {
|
func autocompleteEmojis(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -273,7 +273,7 @@ func autocompleteEmojis(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.EmojiListToJson(emojis)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.EmojiListToJson(emojis)))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ func getImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
// security reasons.
|
// security reasons.
|
||||||
if transform := c.App.ImageProxyAdder(); transform != nil {
|
if transform := c.App.ImageProxyAdder(); transform != nil {
|
||||||
http.Redirect(w, r, transform(r.URL.Query().Get("url")), http.StatusFound)
|
http.Redirect(w, r, transform(r.URL.Query().Get("url")), http.StatusFound)
|
||||||
} else {
|
return
|
||||||
http.NotFound(w, r)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
http.NotFound(w, r)
|
||||||
}
|
}
|
||||||
|
|||||||
30
api4/job.go
30
api4/job.go
@@ -28,12 +28,13 @@ func getJob(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if job, err := c.App.GetJob(c.Params.JobId); err != nil {
|
job, err := c.App.GetJob(c.Params.JobId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(job.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(job.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func createJob(c *Context, w http.ResponseWriter, r *http.Request) {
|
func createJob(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -48,13 +49,14 @@ func createJob(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if job, err := c.App.CreateJob(job); err != nil {
|
job, err := c.App.CreateJob(job)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.WriteHeader(http.StatusCreated)
|
|
||||||
w.Write([]byte(job.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.WriteHeader(http.StatusCreated)
|
||||||
|
w.Write([]byte(job.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getJobs(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getJobs(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -67,12 +69,13 @@ func getJobs(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if jobs, err := c.App.GetJobsPage(c.Params.Page, c.Params.PerPage); err != nil {
|
jobs, err := c.App.GetJobsPage(c.Params.Page, c.Params.PerPage)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.JobsToJson(jobs)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.JobsToJson(jobs)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getJobsByType(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getJobsByType(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -86,12 +89,13 @@ func getJobsByType(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if jobs, err := c.App.GetJobsByTypePage(c.Params.JobType, c.Params.Page, c.Params.PerPage); err != nil {
|
jobs, err := c.App.GetJobsByTypePage(c.Params.JobType, c.Params.Page, c.Params.PerPage)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.JobsToJson(jobs)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.JobsToJson(jobs)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func cancelJob(c *Context, w http.ResponseWriter, r *http.Request) {
|
func cancelJob(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@@ -520,9 +520,9 @@ func completeOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
if action == model.OAUTH_ACTION_MOBILE {
|
if action == model.OAUTH_ACTION_MOBILE {
|
||||||
ReturnStatusOK(w)
|
ReturnStatusOK(w)
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
http.Redirect(w, r, redirectUrl, http.StatusTemporaryRedirect)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
http.Redirect(w, r, redirectUrl, http.StatusTemporaryRedirect)
|
||||||
}
|
}
|
||||||
|
|
||||||
func loginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
|
func loginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -540,12 +540,13 @@ func loginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if authUrl, err := c.App.GetOAuthLoginEndpoint(w, r, c.Params.Service, teamId, model.OAUTH_ACTION_LOGIN, redirectTo, loginHint); err != nil {
|
authUrl, err := c.App.GetOAuthLoginEndpoint(w, r, c.Params.Service, teamId, model.OAUTH_ACTION_LOGIN, redirectTo, loginHint)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
http.Redirect(w, r, authUrl, http.StatusFound)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
http.Redirect(w, r, authUrl, http.StatusFound)
|
||||||
}
|
}
|
||||||
|
|
||||||
func mobileLoginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
|
func mobileLoginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -560,12 +561,13 @@ func mobileLoginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if authUrl, err := c.App.GetOAuthLoginEndpoint(w, r, c.Params.Service, teamId, model.OAUTH_ACTION_MOBILE, "", ""); err != nil {
|
authUrl, err := c.App.GetOAuthLoginEndpoint(w, r, c.Params.Service, teamId, model.OAUTH_ACTION_MOBILE, "", "")
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
http.Redirect(w, r, authUrl, http.StatusFound)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
http.Redirect(w, r, authUrl, http.StatusFound)
|
||||||
}
|
}
|
||||||
|
|
||||||
func signupWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
|
func signupWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -587,10 +589,11 @@ func signupWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if authUrl, err := c.App.GetOAuthSignupEndpoint(w, r, c.Params.Service, teamId); err != nil {
|
authUrl, err := c.App.GetOAuthSignupEndpoint(w, r, c.Params.Service, teamId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
http.Redirect(w, r, authUrl, http.StatusFound)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
http.Redirect(w, r, authUrl, http.StatusFound)
|
||||||
}
|
}
|
||||||
|
|||||||
29
api4/post.go
29
api4/post.go
@@ -234,10 +234,10 @@ func getPost(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
if c.HandleEtag(post.Etag(), "Get Post", w, r) {
|
if c.HandleEtag(post.Etag(), "Get Post", w, r) {
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Header().Set(model.HEADER_ETAG_SERVER, post.Etag())
|
|
||||||
w.Write([]byte(c.App.PostWithProxyAddedToImageURLs(post).ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Header().Set(model.HEADER_ETAG_SERVER, post.Etag())
|
||||||
|
w.Write([]byte(c.App.PostWithProxyAddedToImageURLs(post).ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func deletePost(c *Context, w http.ResponseWriter, r *http.Request) {
|
func deletePost(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -313,10 +313,10 @@ func getPostThread(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
if c.HandleEtag(list.Etag(), "Get Post Thread", w, r) {
|
if c.HandleEtag(list.Etag(), "Get Post Thread", w, r) {
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Header().Set(model.HEADER_ETAG_SERVER, list.Etag())
|
|
||||||
w.Write([]byte(c.App.PostListWithProxyAddedToImageURLs(list).ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Header().Set(model.HEADER_ETAG_SERVER, list.Etag())
|
||||||
|
w.Write([]byte(c.App.PostListWithProxyAddedToImageURLs(list).ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) {
|
func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -487,16 +487,19 @@ func getFileInfosForPost(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if infos, err := c.App.GetFileInfosForPost(c.Params.PostId, false); err != nil {
|
infos, err := c.App.GetFileInfosForPost(c.Params.PostId, false)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else if c.HandleEtag(model.GetEtagForFileInfos(infos), "Get File Infos For Post", w, r) {
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
w.Header().Set("Cache-Control", "max-age=2592000, public")
|
|
||||||
w.Header().Set(model.HEADER_ETAG_SERVER, model.GetEtagForFileInfos(infos))
|
|
||||||
w.Write([]byte(model.FileInfosToJson(infos)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if c.HandleEtag(model.GetEtagForFileInfos(infos), "Get File Infos For Post", w, r) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
w.Header().Set("Cache-Control", "max-age=2592000, public")
|
||||||
|
w.Header().Set(model.HEADER_ETAG_SERVER, model.GetEtagForFileInfos(infos))
|
||||||
|
w.Write([]byte(model.FileInfosToJson(infos)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func doPostAction(c *Context, w http.ResponseWriter, r *http.Request) {
|
func doPostAction(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@@ -28,13 +28,13 @@ func getPreferences(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if preferences, err := c.App.GetPreferencesForUser(c.Params.UserId); err != nil {
|
preferences, err := c.App.GetPreferencesForUser(c.Params.UserId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(preferences.ToJson()))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(preferences.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getPreferencesByCategory(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getPreferencesByCategory(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -48,13 +48,13 @@ func getPreferencesByCategory(c *Context, w http.ResponseWriter, r *http.Request
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if preferences, err := c.App.GetPreferenceByCategoryForUser(c.Params.UserId, c.Params.Category); err != nil {
|
preferences, err := c.App.GetPreferenceByCategoryForUser(c.Params.UserId, c.Params.Category)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(preferences.ToJson()))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(preferences.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getPreferenceByCategoryAndName(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getPreferenceByCategoryAndName(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -68,13 +68,13 @@ func getPreferenceByCategoryAndName(c *Context, w http.ResponseWriter, r *http.R
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if preferences, err := c.App.GetPreferenceByCategoryAndNameForUser(c.Params.UserId, c.Params.Category, c.Params.PreferenceName); err != nil {
|
preferences, err := c.App.GetPreferenceByCategoryAndNameForUser(c.Params.UserId, c.Params.Category, c.Params.PreferenceName)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(preferences.ToJson()))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(preferences.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func updatePreferences(c *Context, w http.ResponseWriter, r *http.Request) {
|
func updatePreferences(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@@ -37,13 +37,13 @@ func saveReaction(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if reaction, err := c.App.SaveReactionForPost(reaction); err != nil {
|
reaction, err := c.App.SaveReactionForPost(reaction)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(reaction.ToJson()))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(reaction.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getReactions(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getReactions(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -57,13 +57,13 @@ func getReactions(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if reactions, err := c.App.GetReactionsForPost(c.Params.PostId); err != nil {
|
reactions, err := c.App.GetReactionsForPost(c.Params.PostId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.ReactionsToJson(reactions)))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.ReactionsToJson(reactions)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteReaction(c *Context, w http.ResponseWriter, r *http.Request) {
|
func deleteReaction(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
30
api4/role.go
30
api4/role.go
@@ -23,12 +23,13 @@ func getRole(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if role, err := c.App.GetRole(c.Params.RoleId); err != nil {
|
role, err := c.App.GetRole(c.Params.RoleId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(role.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(role.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getRoleByName(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getRoleByName(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -37,12 +38,13 @@ func getRoleByName(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if role, err := c.App.GetRoleByName(c.Params.RoleName); err != nil {
|
role, err := c.App.GetRoleByName(c.Params.RoleName)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(role.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(role.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getRolesByNames(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getRolesByNames(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -67,12 +69,13 @@ func getRolesByNames(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
cleanedRoleNames = append(cleanedRoleNames, rolename)
|
cleanedRoleNames = append(cleanedRoleNames, rolename)
|
||||||
}
|
}
|
||||||
|
|
||||||
if roles, err := c.App.GetRolesByNames(cleanedRoleNames); err != nil {
|
roles, err := c.App.GetRolesByNames(cleanedRoleNames)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.RoleListToJson(roles)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.RoleListToJson(roles)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func patchRole(c *Context, w http.ResponseWriter, r *http.Request) {
|
func patchRole(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -124,11 +127,12 @@ func patchRole(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if role, err := c.App.PatchRole(oldRole, patch); err != nil {
|
role, err := c.App.PatchRole(oldRole, patch)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
c.LogAudit("")
|
|
||||||
w.Write([]byte(role.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.LogAudit("")
|
||||||
|
w.Write([]byte(role.ToJson()))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,14 +36,14 @@ func createScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var err *model.AppError
|
scheme, err := c.App.CreateScheme(scheme)
|
||||||
if scheme, err = c.App.CreateScheme(scheme); err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.WriteHeader(http.StatusCreated)
|
|
||||||
w.Write([]byte(scheme.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.WriteHeader(http.StatusCreated)
|
||||||
|
w.Write([]byte(scheme.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -57,12 +57,13 @@ func getScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if scheme, err := c.App.GetScheme(c.Params.SchemeId); err != nil {
|
scheme, err := c.App.GetScheme(c.Params.SchemeId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(scheme.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(scheme.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getSchemes(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getSchemes(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -81,12 +82,13 @@ func getSchemes(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if schemes, err := c.App.GetSchemesPage(c.Params.Scope, c.Params.Page, c.Params.PerPage); err != nil {
|
schemes, err := c.App.GetSchemesPage(c.Params.Scope, c.Params.Page, c.Params.PerPage)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.SchemesToJson(schemes)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.SchemesToJson(schemes)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getTeamsForScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getTeamsForScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -111,12 +113,13 @@ func getTeamsForScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if teams, err := c.App.GetTeamsForSchemePage(scheme, c.Params.Page, c.Params.PerPage); err != nil {
|
teams, err := c.App.GetTeamsForSchemePage(scheme, c.Params.Page, c.Params.PerPage)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.TeamListToJson(teams)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.TeamListToJson(teams)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getChannelsForScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getChannelsForScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -141,12 +144,13 @@ func getChannelsForScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if channels, err := c.App.GetChannelsForSchemePage(scheme, c.Params.Page, c.Params.PerPage); err != nil {
|
channels, err := c.App.GetChannelsForSchemePage(scheme, c.Params.Page, c.Params.PerPage)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(channels.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(channels.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func patchScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
func patchScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -177,13 +181,14 @@ func patchScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if scheme, err = c.App.PatchScheme(scheme, patch); err != nil {
|
scheme, err = c.App.PatchScheme(scheme, patch)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
c.LogAudit("")
|
|
||||||
w.Write([]byte(scheme.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.LogAudit("")
|
||||||
|
w.Write([]byte(scheme.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
func deleteScheme(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@@ -23,17 +23,18 @@ func getUserStatus(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
// No permission check required
|
// No permission check required
|
||||||
|
|
||||||
if statusMap, err := c.App.GetUserStatusesByIds([]string{c.Params.UserId}); err != nil {
|
statusMap, err := c.App.GetUserStatusesByIds([]string{c.Params.UserId})
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
if len(statusMap) == 0 {
|
|
||||||
c.Err = model.NewAppError("UserStatus", "api.status.user_not_found.app_error", nil, "", http.StatusNotFound)
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
w.Write([]byte(statusMap[0].ToJson()))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(statusMap) == 0 {
|
||||||
|
c.Err = model.NewAppError("UserStatus", "api.status.user_not_found.app_error", nil, "", http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(statusMap[0].ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getUserStatusesByIds(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getUserStatusesByIds(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -46,12 +47,13 @@ func getUserStatusesByIds(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
// No permission check required
|
// No permission check required
|
||||||
|
|
||||||
if statusMap, err := c.App.GetUserStatusesByIds(userIds); err != nil {
|
statusMap, err := c.App.GetUserStatusesByIds(userIds)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.StatusListToJson(statusMap)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.StatusListToJson(statusMap)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateUserStatus(c *Context, w http.ResponseWriter, r *http.Request) {
|
func updateUserStatus(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@@ -341,20 +341,21 @@ func addLicense(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
buf := bytes.NewBuffer(nil)
|
buf := bytes.NewBuffer(nil)
|
||||||
io.Copy(buf, file)
|
io.Copy(buf, file)
|
||||||
|
|
||||||
if license, err := c.App.SaveLicense(buf.Bytes()); err != nil {
|
license, appErr := c.App.SaveLicense(buf.Bytes())
|
||||||
if err.Id == model.EXPIRED_LICENSE_ERROR {
|
if appErr != nil {
|
||||||
|
if appErr.Id == model.EXPIRED_LICENSE_ERROR {
|
||||||
c.LogAudit("failed - expired or non-started license")
|
c.LogAudit("failed - expired or non-started license")
|
||||||
} else if err.Id == model.INVALID_LICENSE_ERROR {
|
} else if appErr.Id == model.INVALID_LICENSE_ERROR {
|
||||||
c.LogAudit("failed - invalid license")
|
c.LogAudit("failed - invalid license")
|
||||||
} else {
|
} else {
|
||||||
c.LogAudit("failed - unable to save license")
|
c.LogAudit("failed - unable to save license")
|
||||||
}
|
}
|
||||||
c.Err = err
|
c.Err = appErr
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
c.LogAudit("success")
|
|
||||||
w.Write([]byte(license.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.LogAudit("success")
|
||||||
|
w.Write([]byte(license.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func removeLicense(c *Context, w http.ResponseWriter, r *http.Request) {
|
func removeLicense(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
146
api4/team.go
146
api4/team.go
@@ -87,20 +87,19 @@ func getTeam(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if team, err := c.App.GetTeam(c.Params.TeamId); err != nil {
|
team, err := c.App.GetTeam(c.Params.TeamId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
}
|
||||||
if (!team.AllowOpenInvite || team.Type != model.TEAM_OPEN) && !c.App.SessionHasPermissionToTeam(c.Session, team.Id, model.PERMISSION_VIEW_TEAM) {
|
|
||||||
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
c.App.SanitizeTeam(c.Session, team)
|
if (!team.AllowOpenInvite || team.Type != model.TEAM_OPEN) && !c.App.SessionHasPermissionToTeam(c.Session, team.Id, model.PERMISSION_VIEW_TEAM) {
|
||||||
|
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
|
||||||
w.Write([]byte(team.ToJson()))
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.App.SanitizeTeam(c.Session, team)
|
||||||
|
w.Write([]byte(team.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getTeamByName(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getTeamByName(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -109,20 +108,19 @@ func getTeamByName(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if team, err := c.App.GetTeamByName(c.Params.TeamName); err != nil {
|
team, err := c.App.GetTeamByName(c.Params.TeamName)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
}
|
||||||
if (!team.AllowOpenInvite || team.Type != model.TEAM_OPEN) && !c.App.SessionHasPermissionToTeam(c.Session, team.Id, model.PERMISSION_VIEW_TEAM) {
|
|
||||||
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
c.App.SanitizeTeam(c.Session, team)
|
if (!team.AllowOpenInvite || team.Type != model.TEAM_OPEN) && !c.App.SessionHasPermissionToTeam(c.Session, team.Id, model.PERMISSION_VIEW_TEAM) {
|
||||||
|
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
|
||||||
w.Write([]byte(team.ToJson()))
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.App.SanitizeTeam(c.Session, team)
|
||||||
|
w.Write([]byte(team.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateTeam(c *Context, w http.ResponseWriter, r *http.Request) {
|
func updateTeam(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -146,14 +144,12 @@ func updateTeam(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updatedTeam, err := c.App.UpdateTeam(team)
|
updatedTeam, err := c.App.UpdateTeam(team)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
c.App.SanitizeTeam(c.Session, updatedTeam)
|
c.App.SanitizeTeam(c.Session, updatedTeam)
|
||||||
|
|
||||||
w.Write([]byte(updatedTeam.ToJson()))
|
w.Write([]byte(updatedTeam.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,14 +221,14 @@ func getTeamsForUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if teams, err := c.App.GetTeamsForUser(c.Params.UserId); err != nil {
|
teams, err := c.App.GetTeamsForUser(c.Params.UserId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
c.App.SanitizeTeams(c.Session, teams)
|
|
||||||
|
|
||||||
w.Write([]byte(model.TeamListToJson(teams)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.App.SanitizeTeams(c.Session, teams)
|
||||||
|
w.Write([]byte(model.TeamListToJson(teams)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getTeamsUnreadForUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getTeamsUnreadForUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -269,13 +265,13 @@ func getTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if team, err := c.App.GetTeamMember(c.Params.TeamId, c.Params.UserId); err != nil {
|
team, err := c.App.GetTeamMember(c.Params.TeamId, c.Params.UserId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(team.ToJson()))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(team.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -289,13 +285,13 @@ func getTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if members, err := c.App.GetTeamMembers(c.Params.TeamId, c.Params.Page*c.Params.PerPage, c.Params.PerPage); err != nil {
|
members, err := c.App.GetTeamMembers(c.Params.TeamId, c.Params.Page*c.Params.PerPage, c.Params.PerPage)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.TeamMembersToJson(members)))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.TeamMembersToJson(members)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getTeamMembersForUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getTeamMembersForUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -505,13 +501,13 @@ func getTeamStats(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if stats, err := c.App.GetTeamStats(c.Params.TeamId); err != nil {
|
stats, err := c.App.GetTeamStats(c.Params.TeamId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(stats.ToJson()))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(stats.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateTeamMemberRoles(c *Context, w http.ResponseWriter, r *http.Request) {
|
func updateTeamMemberRoles(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -745,22 +741,23 @@ func getInviteInfo(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if team, err := c.App.GetTeamByInviteId(c.Params.InviteId); err != nil {
|
team, err := c.App.GetTeamByInviteId(c.Params.InviteId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
if !(team.Type == model.TEAM_OPEN) {
|
|
||||||
c.Err = model.NewAppError("getInviteInfo", "api.team.get_invite_info.not_open_team", nil, "id="+c.Params.InviteId, http.StatusForbidden)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result := map[string]string{}
|
|
||||||
result["display_name"] = team.DisplayName
|
|
||||||
result["description"] = team.Description
|
|
||||||
result["name"] = team.Name
|
|
||||||
result["id"] = team.Id
|
|
||||||
w.Write([]byte(model.MapToJson(result)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !(team.Type == model.TEAM_OPEN) {
|
||||||
|
c.Err = model.NewAppError("getInviteInfo", "api.team.get_invite_info.not_open_team", nil, "id="+c.Params.InviteId, http.StatusForbidden)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result := map[string]string{}
|
||||||
|
result["display_name"] = team.DisplayName
|
||||||
|
result["description"] = team.Description
|
||||||
|
result["name"] = team.Name
|
||||||
|
result["id"] = team.Id
|
||||||
|
w.Write([]byte(model.MapToJson(result)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getTeamIcon(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getTeamIcon(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -769,32 +766,35 @@ func getTeamIcon(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if team, err := c.App.GetTeam(c.Params.TeamId); err != nil {
|
team, err := c.App.GetTeam(c.Params.TeamId)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
if !c.App.SessionHasPermissionToTeam(c.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) &&
|
|
||||||
(team.Type != model.TEAM_OPEN || team.AllowOpenInvite) {
|
|
||||||
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
etag := strconv.FormatInt(team.LastTeamIconUpdate, 10)
|
|
||||||
|
|
||||||
if c.HandleEtag(etag, "Get Team Icon", w, r) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if img, err := c.App.GetTeamIcon(team); err != nil {
|
|
||||||
c.Err = err
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
w.Header().Set("Content-Type", "image/png")
|
|
||||||
w.Header().Set("Cache-Control", fmt.Sprintf("max-age=%v, public", 24*60*60)) // 24 hrs
|
|
||||||
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
|
||||||
w.Write(img)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !c.App.SessionHasPermissionToTeam(c.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) &&
|
||||||
|
(team.Type != model.TEAM_OPEN || team.AllowOpenInvite) {
|
||||||
|
c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
etag := strconv.FormatInt(team.LastTeamIconUpdate, 10)
|
||||||
|
|
||||||
|
if c.HandleEtag(etag, "Get Team Icon", w, r) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
img, err := c.App.GetTeamIcon(team)
|
||||||
|
if err != nil {
|
||||||
|
c.Err = err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
w.Header().Set("Content-Type", "image/png")
|
||||||
|
w.Header().Set("Cache-Control", fmt.Sprintf("max-age=%v, public", 24*60*60)) // 24 hrs
|
||||||
|
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
||||||
|
w.Write(img)
|
||||||
}
|
}
|
||||||
|
|
||||||
func setTeamIcon(c *Context, w http.ResponseWriter, r *http.Request) {
|
func setTeamIcon(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
245
api4/user.go
245
api4/user.go
@@ -122,17 +122,16 @@ func getUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
if c.HandleEtag(etag, "Get User", w, r) {
|
if c.HandleEtag(etag, "Get User", w, r) {
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
if c.Session.UserId == user.Id {
|
|
||||||
user.Sanitize(map[string]bool{})
|
|
||||||
} else {
|
|
||||||
c.App.SanitizeProfile(user, c.IsSystemAdmin())
|
|
||||||
}
|
|
||||||
c.App.UpdateLastActivityAtIfNeeded(c.Session)
|
|
||||||
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
|
||||||
w.Write([]byte(user.ToJson()))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if c.Session.UserId == user.Id {
|
||||||
|
user.Sanitize(map[string]bool{})
|
||||||
|
} else {
|
||||||
|
c.App.SanitizeProfile(user, c.IsSystemAdmin())
|
||||||
|
}
|
||||||
|
c.App.UpdateLastActivityAtIfNeeded(c.Session)
|
||||||
|
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
||||||
|
w.Write([]byte(user.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getUserByUsername(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getUserByUsername(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -155,16 +154,15 @@ func getUserByUsername(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
if c.HandleEtag(etag, "Get User", w, r) {
|
if c.HandleEtag(etag, "Get User", w, r) {
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
if c.Session.UserId == user.Id {
|
|
||||||
user.Sanitize(map[string]bool{})
|
|
||||||
} else {
|
|
||||||
c.App.SanitizeProfile(user, c.IsSystemAdmin())
|
|
||||||
}
|
|
||||||
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
|
||||||
w.Write([]byte(user.ToJson()))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if c.Session.UserId == user.Id {
|
||||||
|
user.Sanitize(map[string]bool{})
|
||||||
|
} else {
|
||||||
|
c.App.SanitizeProfile(user, c.IsSystemAdmin())
|
||||||
|
}
|
||||||
|
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
||||||
|
w.Write([]byte(user.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getUserByEmail(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getUserByEmail(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -187,12 +185,11 @@ func getUserByEmail(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
if c.HandleEtag(etag, "Get User", w, r) {
|
if c.HandleEtag(etag, "Get User", w, r) {
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
c.App.SanitizeProfile(user, c.IsSystemAdmin())
|
|
||||||
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
|
||||||
w.Write([]byte(user.ToJson()))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.App.SanitizeProfile(user, c.IsSystemAdmin())
|
||||||
|
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
||||||
|
w.Write([]byte(user.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -201,38 +198,39 @@ func getProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if users, err := c.App.GetUsersByIds([]string{c.Params.UserId}, c.IsSystemAdmin()); err != nil {
|
users, err := c.App.GetUsersByIds([]string{c.Params.UserId}, c.IsSystemAdmin())
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
if len(users) == 0 {
|
|
||||||
c.Err = model.NewAppError("getProfileImage", "api.user.get_profile_image.not_found.app_error", nil, "", http.StatusNotFound)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
user := users[0]
|
|
||||||
etag := strconv.FormatInt(user.LastPictureUpdate, 10)
|
|
||||||
if c.HandleEtag(etag, "Get Profile Image", w, r) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var img []byte
|
|
||||||
img, readFailed, err := c.App.GetProfileImage(user)
|
|
||||||
if err != nil {
|
|
||||||
c.Err = err
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if readFailed {
|
|
||||||
w.Header().Set("Cache-Control", fmt.Sprintf("max-age=%v, public", 5*60)) // 5 mins
|
|
||||||
} else {
|
|
||||||
w.Header().Set("Cache-Control", fmt.Sprintf("max-age=%v, public", 24*60*60)) // 24 hrs
|
|
||||||
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "image/png")
|
|
||||||
w.Write(img)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(users) == 0 {
|
||||||
|
c.Err = model.NewAppError("getProfileImage", "api.user.get_profile_image.not_found.app_error", nil, "", http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
user := users[0]
|
||||||
|
etag := strconv.FormatInt(user.LastPictureUpdate, 10)
|
||||||
|
if c.HandleEtag(etag, "Get Profile Image", w, r) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var img []byte
|
||||||
|
img, readFailed, err := c.App.GetProfileImage(user)
|
||||||
|
if err != nil {
|
||||||
|
c.Err = err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if readFailed {
|
||||||
|
w.Header().Set("Cache-Control", fmt.Sprintf("max-age=%v, public", 5*60)) // 5 mins
|
||||||
|
} else {
|
||||||
|
w.Header().Set("Cache-Control", fmt.Sprintf("max-age=%v, public", 24*60*60)) // 24 hrs
|
||||||
|
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
||||||
|
}
|
||||||
|
|
||||||
|
w.Header().Set("Content-Type", "image/png")
|
||||||
|
w.Write(img)
|
||||||
}
|
}
|
||||||
|
|
||||||
func setProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
func setProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -292,13 +290,13 @@ func getTotalUsersStats(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if stats, err := c.App.GetTotalUsersStats(); err != nil {
|
stats, err := c.App.GetTotalUsersStats()
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(stats.ToJson()))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(stats.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getUsers(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getUsers(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -402,13 +400,13 @@ func getUsers(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
if len(etag) > 0 {
|
|
||||||
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
|
||||||
}
|
|
||||||
c.App.UpdateLastActivityAtIfNeeded(c.Session)
|
|
||||||
w.Write([]byte(model.UserListToJson(profiles)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(etag) > 0 {
|
||||||
|
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
||||||
|
}
|
||||||
|
c.App.UpdateLastActivityAtIfNeeded(c.Session)
|
||||||
|
w.Write([]byte(model.UserListToJson(profiles)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getUsersByIds(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getUsersByIds(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -421,12 +419,13 @@ func getUsersByIds(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
// No permission check required
|
// No permission check required
|
||||||
|
|
||||||
if users, err := c.App.GetUsersByIds(userIds, c.IsSystemAdmin()); err != nil {
|
users, err := c.App.GetUsersByIds(userIds, c.IsSystemAdmin())
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.UserListToJson(users)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.UserListToJson(users)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getUsersByNames(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getUsersByNames(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -439,12 +438,13 @@ func getUsersByNames(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
// No permission check required
|
// No permission check required
|
||||||
|
|
||||||
if users, err := c.App.GetUsersByUsernames(usernames, c.IsSystemAdmin()); err != nil {
|
users, err := c.App.GetUsersByUsernames(usernames, c.IsSystemAdmin())
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.UserListToJson(users)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.UserListToJson(users)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func searchUsers(c *Context, w http.ResponseWriter, r *http.Request) {
|
func searchUsers(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -500,12 +500,13 @@ func searchUsers(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if profiles, err := c.App.SearchUsers(props, searchOptions, c.IsSystemAdmin()); err != nil {
|
profiles, err := c.App.SearchUsers(props, searchOptions, c.IsSystemAdmin())
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(model.UserListToJson(profiles)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.UserListToJson(profiles)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func autocompleteUsers(c *Context, w http.ResponseWriter, r *http.Request) {
|
func autocompleteUsers(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -565,9 +566,9 @@ func autocompleteUsers(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte((autocomplete.ToJson())))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte((autocomplete.ToJson())))
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
func updateUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -601,13 +602,14 @@ func updateUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ruser, err := c.App.UpdateUserAsUser(user, c.IsSystemAdmin()); err != nil {
|
ruser, err := c.App.UpdateUserAsUser(user, c.IsSystemAdmin())
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
c.LogAudit("")
|
|
||||||
w.Write([]byte(ruser.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.LogAudit("")
|
||||||
|
w.Write([]byte(ruser.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func patchUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
func patchUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -646,14 +648,15 @@ func patchUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ruser, err := c.App.PatchUser(c.Params.UserId, patch, c.IsSystemAdmin()); err != nil {
|
ruser, err := c.App.PatchUser(c.Params.UserId, patch, c.IsSystemAdmin())
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
c.App.SetAutoResponderStatus(ruser, ouser.NotifyProps)
|
|
||||||
c.LogAudit("")
|
|
||||||
w.Write([]byte(ruser.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.App.SetAutoResponderStatus(ruser, ouser.NotifyProps)
|
||||||
|
c.LogAudit("")
|
||||||
|
w.Write([]byte(ruser.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
func deleteUser(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -707,10 +710,9 @@ func updateUserRoles(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
if _, err := c.App.UpdateUserRoles(c.Params.UserId, newRoles, true); err != nil {
|
if _, err := c.App.UpdateUserRoles(c.Params.UserId, newRoles, true); err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
c.LogAuditWithUserId(c.Params.UserId, "roles="+newRoles)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.LogAuditWithUserId(c.Params.UserId, "roles="+newRoles)
|
||||||
ReturnStatusOK(w)
|
ReturnStatusOK(w)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -752,17 +754,17 @@ func updateUserActive(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
if _, err := c.App.UpdateActive(user, active); err != nil {
|
if _, err := c.App.UpdateActive(user, active); err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
} else {
|
|
||||||
c.LogAuditWithUserId(user.Id, fmt.Sprintf("active=%v", active))
|
|
||||||
if isSelfDeactive {
|
|
||||||
c.App.Go(func() {
|
|
||||||
if err = c.App.SendDeactivateAccountEmail(user.Email, user.Locale, c.App.GetSiteURL()); err != nil {
|
|
||||||
mlog.Error(err.Error())
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
ReturnStatusOK(w)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.LogAuditWithUserId(user.Id, fmt.Sprintf("active=%v", active))
|
||||||
|
if isSelfDeactive {
|
||||||
|
c.App.Go(func() {
|
||||||
|
if err = c.App.SendDeactivateAccountEmail(user.Email, user.Locale, c.App.GetSiteURL()); err != nil {
|
||||||
|
mlog.Error(err.Error())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
ReturnStatusOK(w)
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateUserAuth(c *Context, w http.ResponseWriter, r *http.Request) {
|
func updateUserAuth(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -782,12 +784,13 @@ func updateUserAuth(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if user, err := c.App.UpdateUserAuth(c.Params.UserId, userAuth); err != nil {
|
user, err := c.App.UpdateUserAuth(c.Params.UserId, userAuth)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
} else {
|
|
||||||
c.LogAuditWithUserId(c.Params.UserId, fmt.Sprintf("updated user auth to service=%v", user.AuthService))
|
|
||||||
w.Write([]byte(user.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.LogAuditWithUserId(c.Params.UserId, fmt.Sprintf("updated user auth to service=%v", user.AuthService))
|
||||||
|
w.Write([]byte(user.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkUserMfa(c *Context, w http.ResponseWriter, r *http.Request) {
|
func checkUserMfa(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -921,10 +924,10 @@ func updatePassword(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
c.LogAudit("failed")
|
c.LogAudit("failed")
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
c.LogAudit("completed")
|
|
||||||
ReturnStatusOK(w)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.LogAudit("completed")
|
||||||
|
ReturnStatusOK(w)
|
||||||
}
|
}
|
||||||
|
|
||||||
func resetPassword(c *Context, w http.ResponseWriter, r *http.Request) {
|
func resetPassword(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -960,14 +963,17 @@ func sendPasswordReset(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if sent, err := c.App.SendPasswordReset(email, c.App.GetSiteURL()); err != nil {
|
sent, err := c.App.SendPasswordReset(email, c.App.GetSiteURL())
|
||||||
|
if err != nil {
|
||||||
if *c.App.Config().ServiceSettings.ExperimentalEnableHardenedMode {
|
if *c.App.Config().ServiceSettings.ExperimentalEnableHardenedMode {
|
||||||
ReturnStatusOK(w)
|
ReturnStatusOK(w)
|
||||||
} else {
|
} else {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
} else if sent {
|
}
|
||||||
|
|
||||||
|
if sent {
|
||||||
c.LogAudit("sent=" + email)
|
c.LogAudit("sent=" + email)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1064,17 +1070,17 @@ func getSessions(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if sessions, err := c.App.GetSessions(c.Params.UserId); err != nil {
|
sessions, err := c.App.GetSessions(c.Params.UserId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
for _, session := range sessions {
|
|
||||||
session.Sanitize()
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Write([]byte(model.SessionsToJson(sessions)))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, session := range sessions {
|
||||||
|
session.Sanitize()
|
||||||
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(model.SessionsToJson(sessions)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func revokeSession(c *Context, w http.ResponseWriter, r *http.Request) {
|
func revokeSession(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -1194,13 +1200,13 @@ func getUserAudits(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if audits, err := c.App.GetAuditsPage(c.Params.UserId, c.Params.Page, c.Params.PerPage); err != nil {
|
audits, err := c.App.GetAuditsPage(c.Params.UserId, c.Params.Page, c.Params.PerPage)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(audits.ToJson()))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(audits.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func verifyUserEmail(c *Context, w http.ResponseWriter, r *http.Request) {
|
func verifyUserEmail(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -1215,11 +1221,10 @@ func verifyUserEmail(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
if err := c.App.VerifyEmailFromToken(token); err != nil {
|
if err := c.App.VerifyEmailFromToken(token); err != nil {
|
||||||
c.Err = model.NewAppError("verifyUserEmail", "api.user.verify_email.bad_link.app_error", nil, err.Error(), http.StatusBadRequest)
|
c.Err = model.NewAppError("verifyUserEmail", "api.user.verify_email.bad_link.app_error", nil, err.Error(), http.StatusBadRequest)
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
c.LogAudit("Email Verified")
|
|
||||||
ReturnStatusOK(w)
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.LogAudit("Email Verified")
|
||||||
|
ReturnStatusOK(w)
|
||||||
}
|
}
|
||||||
|
|
||||||
func sendVerificationEmail(c *Context, w http.ResponseWriter, r *http.Request) {
|
func sendVerificationEmail(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
137
api4/webhook.go
137
api4/webhook.go
@@ -50,14 +50,15 @@ func createIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if incomingHook, err := c.App.CreateIncomingWebhookForChannel(c.Session.UserId, channel, hook); err != nil {
|
incomingHook, err := c.App.CreateIncomingWebhookForChannel(c.Session.UserId, channel, hook)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
c.LogAudit("success")
|
|
||||||
w.WriteHeader(http.StatusCreated)
|
|
||||||
w.Write([]byte(incomingHook.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.LogAudit("success")
|
||||||
|
w.WriteHeader(http.StatusCreated)
|
||||||
|
w.Write([]byte(incomingHook.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
|
func updateIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -114,14 +115,15 @@ func updateIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if incomingHook, err := c.App.UpdateIncomingWebhook(oldHook, updatedHook); err != nil {
|
incomingHook, err := c.App.UpdateIncomingWebhook(oldHook, updatedHook)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
c.LogAudit("success")
|
|
||||||
w.WriteHeader(http.StatusCreated)
|
|
||||||
w.Write([]byte(incomingHook.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.LogAudit("success")
|
||||||
|
w.WriteHeader(http.StatusCreated)
|
||||||
|
w.Write([]byte(incomingHook.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getIncomingHooks(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getIncomingHooks(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -166,32 +168,32 @@ func getIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
var hook *model.IncomingWebhook
|
var hook *model.IncomingWebhook
|
||||||
var channel *model.Channel
|
var channel *model.Channel
|
||||||
|
|
||||||
if hook, err = c.App.GetIncomingWebhook(hookId); err != nil {
|
hook, err = c.App.GetIncomingWebhook(hookId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
}
|
||||||
channel, err = c.App.GetChannel(hook.ChannelId)
|
|
||||||
if err != nil {
|
|
||||||
c.Err = err
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if !c.App.SessionHasPermissionToTeam(c.Session, hook.TeamId, model.PERMISSION_MANAGE_WEBHOOKS) ||
|
channel, err = c.App.GetChannel(hook.ChannelId)
|
||||||
(channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, hook.ChannelId, model.PERMISSION_READ_CHANNEL)) {
|
if err != nil {
|
||||||
c.LogAudit("fail - bad permissions")
|
c.Err = err
|
||||||
c.SetPermissionError(model.PERMISSION_MANAGE_WEBHOOKS)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if c.Session.UserId != hook.UserId && !c.App.SessionHasPermissionToTeam(c.Session, hook.TeamId, model.PERMISSION_MANAGE_OTHERS_WEBHOOKS) {
|
|
||||||
c.LogAudit("fail - inappropriate permissions")
|
|
||||||
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_WEBHOOKS)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Write([]byte(hook.ToJson()))
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !c.App.SessionHasPermissionToTeam(c.Session, hook.TeamId, model.PERMISSION_MANAGE_WEBHOOKS) ||
|
||||||
|
(channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, hook.ChannelId, model.PERMISSION_READ_CHANNEL)) {
|
||||||
|
c.LogAudit("fail - bad permissions")
|
||||||
|
c.SetPermissionError(model.PERMISSION_MANAGE_WEBHOOKS)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if c.Session.UserId != hook.UserId && !c.App.SessionHasPermissionToTeam(c.Session, hook.TeamId, model.PERMISSION_MANAGE_OTHERS_WEBHOOKS) {
|
||||||
|
c.LogAudit("fail - inappropriate permissions")
|
||||||
|
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_WEBHOOKS)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(hook.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
|
func deleteIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -206,36 +208,37 @@ func deleteIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
var hook *model.IncomingWebhook
|
var hook *model.IncomingWebhook
|
||||||
var channel *model.Channel
|
var channel *model.Channel
|
||||||
|
|
||||||
if hook, err = c.App.GetIncomingWebhook(hookId); err != nil {
|
hook, err = c.App.GetIncomingWebhook(hookId)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
channel, err = c.App.GetChannel(hook.ChannelId)
|
|
||||||
if err != nil {
|
|
||||||
c.Err = err
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if !c.App.SessionHasPermissionToTeam(c.Session, hook.TeamId, model.PERMISSION_MANAGE_WEBHOOKS) ||
|
|
||||||
(channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, hook.ChannelId, model.PERMISSION_READ_CHANNEL)) {
|
|
||||||
c.LogAudit("fail - bad permissions")
|
|
||||||
c.SetPermissionError(model.PERMISSION_MANAGE_WEBHOOKS)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if c.Session.UserId != hook.UserId && !c.App.SessionHasPermissionToTeam(c.Session, hook.TeamId, model.PERMISSION_MANAGE_OTHERS_WEBHOOKS) {
|
|
||||||
c.LogAudit("fail - inappropriate permissions")
|
|
||||||
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_WEBHOOKS)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if err = c.App.DeleteIncomingWebhook(hookId); err != nil {
|
|
||||||
c.Err = err
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnStatusOK(w)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
channel, err = c.App.GetChannel(hook.ChannelId)
|
||||||
|
if err != nil {
|
||||||
|
c.Err = err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !c.App.SessionHasPermissionToTeam(c.Session, hook.TeamId, model.PERMISSION_MANAGE_WEBHOOKS) ||
|
||||||
|
(channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.Session, hook.ChannelId, model.PERMISSION_READ_CHANNEL)) {
|
||||||
|
c.LogAudit("fail - bad permissions")
|
||||||
|
c.SetPermissionError(model.PERMISSION_MANAGE_WEBHOOKS)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if c.Session.UserId != hook.UserId && !c.App.SessionHasPermissionToTeam(c.Session, hook.TeamId, model.PERMISSION_MANAGE_OTHERS_WEBHOOKS) {
|
||||||
|
c.LogAudit("fail - inappropriate permissions")
|
||||||
|
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_WEBHOOKS)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = c.App.DeleteIncomingWebhook(hookId); err != nil {
|
||||||
|
c.Err = err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnStatusOK(w)
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
|
func updateOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -297,15 +300,16 @@ func createOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if rhook, err := c.App.CreateOutgoingWebhook(hook); err != nil {
|
rhook, err := c.App.CreateOutgoingWebhook(hook)
|
||||||
|
if err != nil {
|
||||||
c.LogAudit("fail")
|
c.LogAudit("fail")
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
c.LogAudit("success")
|
|
||||||
w.WriteHeader(http.StatusCreated)
|
|
||||||
w.Write([]byte(rhook.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.LogAudit("success")
|
||||||
|
w.WriteHeader(http.StatusCreated)
|
||||||
|
w.Write([]byte(rhook.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getOutgoingHooks(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getOutgoingHooks(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -400,12 +404,13 @@ func regenOutgoingHookToken(c *Context, w http.ResponseWriter, r *http.Request)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if rhook, err := c.App.RegenOutgoingWebhookToken(hook); err != nil {
|
rhook, err := c.App.RegenOutgoingWebhookToken(hook)
|
||||||
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
} else {
|
|
||||||
w.Write([]byte(rhook.ToJson()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.Write([]byte(rhook.ToJson()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
|
func deleteOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user