summaryrefslogtreecommitdiffstats
path: root/api/post.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/post.go')
-rw-r--r--api/post.go19
1 files changed, 17 insertions, 2 deletions
diff --git a/api/post.go b/api/post.go
index b6539ed54..9c22dc5ee 100644
--- a/api/post.go
+++ b/api/post.go
@@ -264,11 +264,26 @@ func getPermalinkTmp(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- if !app.HasPermissionToChannelByPost(c.Session.UserId, postId, model.PERMISSION_JOIN_PUBLIC_CHANNELS) {
- c.SetPermissionError(model.PERMISSION_JOIN_PUBLIC_CHANNELS)
+ var channel *model.Channel
+ if result := <-app.Srv.Store.Channel().GetForPost(postId); result.Err == nil {
+ channel = result.Data.(*model.Channel)
+ } else {
+ c.SetInvalidParam("getPermalinkTmp", "postId")
return
}
+ if channel.Type == model.CHANNEL_OPEN {
+ if !app.HasPermissionToChannelByPost(c.Session.UserId, postId, model.PERMISSION_JOIN_PUBLIC_CHANNELS) {
+ c.SetPermissionError(model.PERMISSION_JOIN_PUBLIC_CHANNELS)
+ return
+ }
+ } else {
+ if !app.HasPermissionToChannelByPost(c.Session.UserId, postId, model.PERMISSION_READ_CHANNEL) {
+ c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
+ return
+ }
+ }
+
if list, err := app.GetPermalinkPost(postId, c.Session.UserId); err != nil {
c.Err = err
return