From d81a61398d01d839e70e2345da787e7ef89c0832 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Wed, 1 Aug 2018 16:55:18 +0200 Subject: Migrate all the api4 to handle errors in idiomatic way (#9143) --- api4/brand.go | 10 ++- api4/command.go | 4 +- api4/data_retention.go | 8 +- api4/emoji.go | 28 +++--- api4/image.go | 5 +- api4/job.go | 30 ++++--- api4/oauth.go | 25 +++--- api4/post.go | 27 +++--- api4/preference.go | 24 ++--- api4/reaction.go | 16 ++-- api4/role.go | 30 ++++--- api4/scheme.go | 47 +++++----- api4/status.go | 24 ++--- api4/system.go | 15 ++-- api4/team.go | 138 ++++++++++++++--------------- api4/user.go | 231 +++++++++++++++++++++++++------------------------ api4/webhook.go | 125 +++++++++++++------------- 17 files changed, 412 insertions(+), 375 deletions(-) (limited to 'api4') diff --git a/api4/brand.go b/api4/brand.go index 2e3081353..b6d353a29 100644 --- a/api4/brand.go +++ b/api4/brand.go @@ -19,13 +19,15 @@ func (api *API) InitBrand() { func getBrandImage(c *Context, w http.ResponseWriter, r *http.Request) { // 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.Write(nil) - } else { - w.Header().Set("Content-Type", "image/png") - w.Write(img) + return } + + w.Header().Set("Content-Type", "image/png") + w.Write(img) } func uploadBrandImage(c *Context, w http.ResponseWriter, r *http.Request) { diff --git a/api4/command.go b/api4/command.go index 69efee010..f7b5b702f 100644 --- a/api4/command.go +++ b/api4/command.go @@ -202,7 +202,9 @@ func executeCommand(c *Context, w http.ResponseWriter, r *http.Request) { if err != nil { c.Err = err 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 // some other team can't be run against this one commandArgs.TeamId = channel.TeamId diff --git a/api4/data_retention.go b/api4/data_retention.go index 8c42473e6..a8930db49 100644 --- a/api4/data_retention.go +++ b/api4/data_retention.go @@ -12,13 +12,13 @@ func (api *API) InitDataRetention() { } func getPolicy(c *Context, w http.ResponseWriter, r *http.Request) { - // No permission check required. - if policy, err := c.App.GetDataRetentionPolicy(); err != nil { + policy, err := c.App.GetDataRetentionPolicy() + if err != nil { c.Err = err return - } else { - w.Write([]byte(policy.ToJson())) } + + w.Write([]byte(policy.ToJson())) } diff --git a/api4/emoji.go b/api4/emoji.go index 750f4b6e9..94936c8fb 100644 --- a/api4/emoji.go +++ b/api4/emoji.go @@ -92,9 +92,9 @@ func createEmoji(c *Context, w http.ResponseWriter, r *http.Request) { if err != nil { c.Err = err return - } else { - w.Write([]byte(newEmoji.ToJson())) } + + w.Write([]byte(newEmoji.ToJson())) } 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 { c.Err = err return - } else { - w.Write([]byte(model.EmojiListToJson(listEmoji))) } + + w.Write([]byte(model.EmojiListToJson(listEmoji))) } 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 { c.Err = err return - } else { - ReturnStatusOK(w) } + + ReturnStatusOK(w) } 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 { c.Err = err return - } else { - w.Write([]byte(emoji.ToJson())) } + + w.Write([]byte(emoji.ToJson())) } 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 { c.Err = err return - } else { - w.Write([]byte(emoji.ToJson())) } + + w.Write([]byte(emoji.ToJson())) } 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 { c.Err = err return - } else { - w.Write([]byte(model.EmojiListToJson(emojis))) } + + w.Write([]byte(model.EmojiListToJson(emojis))) } 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 { c.Err = err return - } else { - w.Write([]byte(model.EmojiListToJson(emojis))) } + + w.Write([]byte(model.EmojiListToJson(emojis))) } diff --git a/api4/image.go b/api4/image.go index 4589de204..99065a8c7 100644 --- a/api4/image.go +++ b/api4/image.go @@ -16,7 +16,8 @@ func getImage(c *Context, w http.ResponseWriter, r *http.Request) { // security reasons. if transform := c.App.ImageProxyAdder(); transform != nil { http.Redirect(w, r, transform(r.URL.Query().Get("url")), http.StatusFound) - } else { - http.NotFound(w, r) + return } + + http.NotFound(w, r) } diff --git a/api4/job.go b/api4/job.go index 864d21bbb..7addf123b 100644 --- a/api4/job.go +++ b/api4/job.go @@ -28,12 +28,13 @@ func getJob(c *Context, w http.ResponseWriter, r *http.Request) { 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 return - } else { - w.Write([]byte(job.ToJson())) } + + w.Write([]byte(job.ToJson())) } 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 } - if job, err := c.App.CreateJob(job); err != nil { + job, err := c.App.CreateJob(job) + if err != nil { c.Err = err 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) { @@ -67,12 +69,13 @@ func getJobs(c *Context, w http.ResponseWriter, r *http.Request) { 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 return - } else { - w.Write([]byte(model.JobsToJson(jobs))) } + + w.Write([]byte(model.JobsToJson(jobs))) } 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 } - 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 return - } else { - w.Write([]byte(model.JobsToJson(jobs))) } + + w.Write([]byte(model.JobsToJson(jobs))) } func cancelJob(c *Context, w http.ResponseWriter, r *http.Request) { diff --git a/api4/oauth.go b/api4/oauth.go index d747e3422..961b0fecd 100644 --- a/api4/oauth.go +++ b/api4/oauth.go @@ -520,9 +520,9 @@ func completeOAuth(c *Context, w http.ResponseWriter, r *http.Request) { if action == model.OAUTH_ACTION_MOBILE { ReturnStatusOK(w) 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) { @@ -540,12 +540,13 @@ func loginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) { 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 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) { @@ -560,12 +561,13 @@ func mobileLoginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) { 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 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) { @@ -587,10 +589,11 @@ func signupWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) { 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 return - } else { - http.Redirect(w, r, authUrl, http.StatusFound) } + + http.Redirect(w, r, authUrl, http.StatusFound) } diff --git a/api4/post.go b/api4/post.go index 12664cc24..2568ade0a 100644 --- a/api4/post.go +++ b/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) { 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) { @@ -313,10 +313,10 @@ func getPostThread(c *Context, w http.ResponseWriter, r *http.Request) { if c.HandleEtag(list.Etag(), "Get Post Thread", w, r) { 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) { @@ -487,16 +487,19 @@ func getFileInfosForPost(c *Context, w http.ResponseWriter, r *http.Request) { 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 return - } else if c.HandleEtag(model.GetEtagForFileInfos(infos), "Get File Infos For Post", w, r) { + } + + 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))) } + + 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) { diff --git a/api4/preference.go b/api4/preference.go index c9f0b3af4..05a74eb2e 100644 --- a/api4/preference.go +++ b/api4/preference.go @@ -28,13 +28,13 @@ func getPreferences(c *Context, w http.ResponseWriter, r *http.Request) { 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 return - } else { - w.Write([]byte(preferences.ToJson())) - return } + + w.Write([]byte(preferences.ToJson())) } 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 } - 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 return - } else { - w.Write([]byte(preferences.ToJson())) - return } + + w.Write([]byte(preferences.ToJson())) } 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 } - 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 return - } else { - w.Write([]byte(preferences.ToJson())) - return } + + w.Write([]byte(preferences.ToJson())) } func updatePreferences(c *Context, w http.ResponseWriter, r *http.Request) { diff --git a/api4/reaction.go b/api4/reaction.go index 337b49751..942e188d4 100644 --- a/api4/reaction.go +++ b/api4/reaction.go @@ -37,13 +37,13 @@ func saveReaction(c *Context, w http.ResponseWriter, r *http.Request) { return } - if reaction, err := c.App.SaveReactionForPost(reaction); err != nil { + reaction, err := c.App.SaveReactionForPost(reaction) + if err != nil { c.Err = err return - } else { - w.Write([]byte(reaction.ToJson())) - return } + + w.Write([]byte(reaction.ToJson())) } 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 } - 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 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) { diff --git a/api4/role.go b/api4/role.go index 2c0465891..4e367629b 100644 --- a/api4/role.go +++ b/api4/role.go @@ -23,12 +23,13 @@ func getRole(c *Context, w http.ResponseWriter, r *http.Request) { 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 return - } else { - w.Write([]byte(role.ToJson())) } + + w.Write([]byte(role.ToJson())) } 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 } - 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 return - } else { - w.Write([]byte(role.ToJson())) } + + w.Write([]byte(role.ToJson())) } 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) } - if roles, err := c.App.GetRolesByNames(cleanedRoleNames); err != nil { + roles, err := c.App.GetRolesByNames(cleanedRoleNames) + if err != nil { c.Err = err return - } else { - w.Write([]byte(model.RoleListToJson(roles))) } + + w.Write([]byte(model.RoleListToJson(roles))) } 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 } - if role, err := c.App.PatchRole(oldRole, patch); err != nil { + role, err := c.App.PatchRole(oldRole, patch) + if err != nil { c.Err = err return - } else { - c.LogAudit("") - w.Write([]byte(role.ToJson())) } + + c.LogAudit("") + w.Write([]byte(role.ToJson())) } diff --git a/api4/scheme.go b/api4/scheme.go index 5070d1c4a..fc30acd40 100644 --- a/api4/scheme.go +++ b/api4/scheme.go @@ -36,14 +36,14 @@ func createScheme(c *Context, w http.ResponseWriter, r *http.Request) { return } - var err *model.AppError - if scheme, err = c.App.CreateScheme(scheme); err != nil { + scheme, err := c.App.CreateScheme(scheme) + if err != nil { c.Err = err 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) { @@ -57,12 +57,13 @@ func getScheme(c *Context, w http.ResponseWriter, r *http.Request) { 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 return - } else { - w.Write([]byte(scheme.ToJson())) } + + w.Write([]byte(scheme.ToJson())) } 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 } - 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 return - } else { - w.Write([]byte(model.SchemesToJson(schemes))) } + + w.Write([]byte(model.SchemesToJson(schemes))) } 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 } - 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 return - } else { - w.Write([]byte(model.TeamListToJson(teams))) } + + w.Write([]byte(model.TeamListToJson(teams))) } 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 } - 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 return - } else { - w.Write([]byte(channels.ToJson())) } + + w.Write([]byte(channels.ToJson())) } 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 } - if scheme, err = c.App.PatchScheme(scheme, patch); err != nil { + scheme, err = c.App.PatchScheme(scheme, patch) + if err != nil { c.Err = err 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) { diff --git a/api4/status.go b/api4/status.go index 30e2140f1..edba5460b 100644 --- a/api4/status.go +++ b/api4/status.go @@ -23,17 +23,18 @@ func getUserStatus(c *Context, w http.ResponseWriter, r *http.Request) { // 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 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) { @@ -46,12 +47,13 @@ func getUserStatusesByIds(c *Context, w http.ResponseWriter, r *http.Request) { // 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 return - } else { - w.Write([]byte(model.StatusListToJson(statusMap))) } + + w.Write([]byte(model.StatusListToJson(statusMap))) } func updateUserStatus(c *Context, w http.ResponseWriter, r *http.Request) { diff --git a/api4/system.go b/api4/system.go index 68f998d6d..9177b8940 100644 --- a/api4/system.go +++ b/api4/system.go @@ -341,20 +341,21 @@ func addLicense(c *Context, w http.ResponseWriter, r *http.Request) { buf := bytes.NewBuffer(nil) io.Copy(buf, file) - if license, err := c.App.SaveLicense(buf.Bytes()); err != nil { - if err.Id == model.EXPIRED_LICENSE_ERROR { + license, appErr := c.App.SaveLicense(buf.Bytes()) + if appErr != nil { + if appErr.Id == model.EXPIRED_LICENSE_ERROR { 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") } else { c.LogAudit("failed - unable to save license") } - c.Err = err + c.Err = appErr 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) { diff --git a/api4/team.go b/api4/team.go index 6fbc537e9..fcc9323ac 100644 --- a/api4/team.go +++ b/api4/team.go @@ -87,20 +87,19 @@ func getTeam(c *Context, w http.ResponseWriter, r *http.Request) { 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 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) + } - w.Write([]byte(team.ToJson())) + 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) + w.Write([]byte(team.ToJson())) } 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 } - 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 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) + } - w.Write([]byte(team.ToJson())) + 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) + w.Write([]byte(team.ToJson())) } 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) - if err != nil { c.Err = err return } c.App.SanitizeTeam(c.Session, updatedTeam) - w.Write([]byte(updatedTeam.ToJson())) } @@ -225,14 +221,14 @@ func getTeamsForUser(c *Context, w http.ResponseWriter, r *http.Request) { 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 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) { @@ -269,13 +265,13 @@ func getTeamMember(c *Context, w http.ResponseWriter, r *http.Request) { 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 return - } else { - w.Write([]byte(team.ToJson())) - return } + + w.Write([]byte(team.ToJson())) } 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 } - 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 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) { @@ -505,13 +501,13 @@ func getTeamStats(c *Context, w http.ResponseWriter, r *http.Request) { 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 return - } else { - w.Write([]byte(stats.ToJson())) - return } + + w.Write([]byte(stats.ToJson())) } 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 } - 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 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) { @@ -769,32 +766,35 @@ func getTeamIcon(c *Context, w http.ResponseWriter, r *http.Request) { 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 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.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 + } - if c.HandleEtag(etag, "Get Team Icon", w, r) { - return - } + etag := strconv.FormatInt(team.LastTeamIconUpdate, 10) - 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.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) { diff --git a/api4/user.go b/api4/user.go index b73354cfd..8d4a264f8 100644 --- a/api4/user.go +++ b/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) { return + } + + if c.Session.UserId == user.Id { + user.Sanitize(map[string]bool{}) } 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 + 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) { @@ -155,16 +154,15 @@ func getUserByUsername(c *Context, w http.ResponseWriter, r *http.Request) { if c.HandleEtag(etag, "Get User", w, r) { return + } + + if c.Session.UserId == user.Id { + user.Sanitize(map[string]bool{}) } 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 + 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) { @@ -187,12 +185,11 @@ func getUserByEmail(c *Context, w http.ResponseWriter, r *http.Request) { if c.HandleEtag(etag, "Get User", w, r) { 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) { @@ -201,38 +198,39 @@ func getProfileImage(c *Context, w http.ResponseWriter, r *http.Request) { 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 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 - } + if len(users) == 0 { + c.Err = model.NewAppError("getProfileImage", "api.user.get_profile_image.not_found.app_error", nil, "", http.StatusNotFound) + return + } - var img []byte - img, readFailed, err := c.App.GetProfileImage(user) - if err != nil { - c.Err = err - return - } + user := users[0] + etag := strconv.FormatInt(user.LastPictureUpdate, 10) + if c.HandleEtag(etag, "Get Profile Image", w, r) { + 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) - } + var img []byte + img, readFailed, err := c.App.GetProfileImage(user) + if err != nil { + c.Err = err + return + } - w.Header().Set("Content-Type", "image/png") - w.Write(img) + 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) { @@ -292,13 +290,13 @@ func getTotalUsersStats(c *Context, w http.ResponseWriter, r *http.Request) { return } - if stats, err := c.App.GetTotalUsersStats(); err != nil { + stats, err := c.App.GetTotalUsersStats() + if err != nil { c.Err = err return - } else { - w.Write([]byte(stats.ToJson())) - return } + + w.Write([]byte(stats.ToJson())) } 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 { c.Err = err 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) { @@ -421,12 +419,13 @@ func getUsersByIds(c *Context, w http.ResponseWriter, r *http.Request) { // 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 return - } else { - w.Write([]byte(model.UserListToJson(users))) } + + w.Write([]byte(model.UserListToJson(users))) } 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 - 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 return - } else { - w.Write([]byte(model.UserListToJson(users))) } + + w.Write([]byte(model.UserListToJson(users))) } 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 return - } else { - w.Write([]byte(model.UserListToJson(profiles))) } + + w.Write([]byte(model.UserListToJson(profiles))) } 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 { c.Err = err return - } else { - w.Write([]byte((autocomplete.ToJson()))) } + + w.Write([]byte((autocomplete.ToJson()))) } 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 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) { @@ -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 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) { @@ -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 { c.Err = err return - } else { - c.LogAuditWithUserId(c.Params.UserId, "roles="+newRoles) } + c.LogAuditWithUserId(c.Params.UserId, "roles="+newRoles) 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 { 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) { @@ -782,12 +784,13 @@ func updateUserAuth(c *Context, w http.ResponseWriter, r *http.Request) { 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 - } 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) { @@ -921,10 +924,10 @@ func updatePassword(c *Context, w http.ResponseWriter, r *http.Request) { c.LogAudit("failed") c.Err = err return - } else { - c.LogAudit("completed") - ReturnStatusOK(w) } + + c.LogAudit("completed") + ReturnStatusOK(w) } 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 } - 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 { ReturnStatusOK(w) } else { c.Err = err } return - } else if sent { + } + + if sent { c.LogAudit("sent=" + email) } @@ -1064,17 +1070,17 @@ func getSessions(c *Context, w http.ResponseWriter, r *http.Request) { 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 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) { @@ -1194,13 +1200,13 @@ func getUserAudits(c *Context, w http.ResponseWriter, r *http.Request) { 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 return - } else { - w.Write([]byte(audits.ToJson())) - return } + + w.Write([]byte(audits.ToJson())) } 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 { c.Err = model.NewAppError("verifyUserEmail", "api.user.verify_email.bad_link.app_error", nil, err.Error(), http.StatusBadRequest) 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) { diff --git a/api4/webhook.go b/api4/webhook.go index ec90c6f3a..90d9a7dc8 100644 --- a/api4/webhook.go +++ b/api4/webhook.go @@ -50,14 +50,15 @@ func createIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) { 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 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) { @@ -114,14 +115,15 @@ func updateIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) { return } - if incomingHook, err := c.App.UpdateIncomingWebhook(oldHook, updatedHook); err != nil { + incomingHook, err := c.App.UpdateIncomingWebhook(oldHook, updatedHook) + if err != nil { c.Err = err 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) { @@ -166,32 +168,32 @@ func getIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) { var hook *model.IncomingWebhook 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 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 - } + channel, err = c.App.GetChannel(hook.ChannelId) + if err != nil { + c.Err = err + 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 !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 + } - w.Write([]byte(hook.ToJson())) + 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) { @@ -206,36 +208,37 @@ func deleteIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) { var hook *model.IncomingWebhook 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 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 - } + channel, err = c.App.GetChannel(hook.ChannelId) + if err != nil { + c.Err = err + 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 !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 err = c.App.DeleteIncomingWebhook(hookId); err != nil { - c.Err = err - 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 + } - ReturnStatusOK(w) + if err = c.App.DeleteIncomingWebhook(hookId); err != nil { + c.Err = err + return } + + ReturnStatusOK(w) } 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 } - if rhook, err := c.App.CreateOutgoingWebhook(hook); err != nil { + rhook, err := c.App.CreateOutgoingWebhook(hook) + if err != nil { c.LogAudit("fail") c.Err = err 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) { @@ -400,12 +404,13 @@ func regenOutgoingHookToken(c *Context, w http.ResponseWriter, r *http.Request) return } - if rhook, err := c.App.RegenOutgoingWebhookToken(hook); err != nil { + rhook, err := c.App.RegenOutgoingWebhookToken(hook) + if err != nil { c.Err = err return - } else { - w.Write([]byte(rhook.ToJson())) } + + w.Write([]byte(rhook.ToJson())) } func deleteOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) { -- cgit v1.2.3-1-g7c22