Cherry-pick PR for guest-user-file-upload-permission for release-10.11 (#35073)
Automatic Merge
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
0655a63354
Коммит
707f7ba42b
@@ -41,3 +41,31 @@ func postPriorityCheckWithContext(where string, c *Context, priority *model.Post
|
||||
c.Err = appErr
|
||||
}
|
||||
}
|
||||
|
||||
// checkUploadFilePermissionForNewFiles checks upload_file permission only when
|
||||
// adding new files to a post, preventing permission bypass via cross-channel file attachments.
|
||||
func checkUploadFilePermissionForNewFiles(c *Context, newFileIds []string, originalPost *model.Post) {
|
||||
if len(newFileIds) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
originalFileIDsMap := make(map[string]bool, len(originalPost.FileIds))
|
||||
for _, fileID := range originalPost.FileIds {
|
||||
originalFileIDsMap[fileID] = true
|
||||
}
|
||||
|
||||
hasNewFiles := false
|
||||
for _, fileID := range newFileIds {
|
||||
if !originalFileIDsMap[fileID] {
|
||||
hasNewFiles = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if hasNewFiles {
|
||||
if ok, _ := c.App.SessionHasPermissionToChannel(c.AppContext, *c.AppContext.Session(), originalPost.ChannelId, model.PermissionUploadFile); !ok {
|
||||
c.SetPermissionError(model.PermissionUploadFile)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user