37 lines
1.3 KiB
Go
37 lines
1.3 KiB
Go
package main
|
|
|
|
import "github.com/mattermost/mattermost/server/public/model"
|
|
|
|
// userHasRemovePermissionsToPost checks if the user has permissions to remove attachments from a post
|
|
// based on the post ID, the user ID, and the channel ID.
|
|
// Returns an error message if the user does not have permissions, or an empty string if the user has permissions.
|
|
func (p *Plugin) userHasRemovePermissionsToPost(userID, channelID, postID string) string {
|
|
// Check if the post exists
|
|
post, appErr := p.API.GetPost(postID)
|
|
if appErr != nil {
|
|
return "Post does not exist"
|
|
}
|
|
|
|
// Check if the post has attachments
|
|
if len(post.FileIds) == 0 {
|
|
return "Post has no attachments"
|
|
}
|
|
|
|
// Check if the user is the post author or has permissions to edit others posts
|
|
user, appErr := p.API.GetUser(userID)
|
|
if appErr != nil {
|
|
return "Internal error, check with your system administrator for assistance"
|
|
}
|
|
|
|
if post.UserId != user.Id && !p.API.HasPermissionToChannel(userID, channelID, model.PermissionEditOthersPosts) {
|
|
return "Not authorized"
|
|
}
|
|
|
|
// Check if the post is editable at this point in time
|
|
config := p.API.GetConfig()
|
|
if config.ServiceSettings.PostEditTimeLimit != nil && *config.ServiceSettings.PostEditTimeLimit > 0 && model.GetMillis() > post.CreateAt+int64(*config.ServiceSettings.PostEditTimeLimit*1000) {
|
|
return "Post is too old to edit"
|
|
}
|
|
|
|
return ""
|
|
}
|