package main import ( "errors" "github.com/mattermost/mattermost/server/public/model" pkgerrors "github.com/pkg/errors" ) var errPermissionDenied = errors.New("permission denied: system admin required") const postsPerPage = 200 func (p *Plugin) isSystemAdmin(userID string) bool { return p.client.User.HasPermissionTo(userID, model.PermissionManageSystem) } func (p *Plugin) cleanupChannel(userID, channelID string) (int, error) { if !p.isSystemAdmin(userID) { return 0, errPermissionDenied } if _, err := p.client.Channel.Get(channelID); err != nil { return 0, pkgerrors.Wrap(err, "failed to get channel") } deleted := 0 for { postList, err := p.client.Post.GetPostsForChannel(channelID, 0, postsPerPage) if err != nil { return deleted, pkgerrors.Wrap(err, "failed to get channel posts") } if len(postList.Order) == 0 { break } for _, postID := range postList.Order { if err := p.client.Post.DeletePost(postID); err != nil { p.client.Log.Warn("Failed to delete post", "post_id", postID, "error", err) continue } deleted++ } } return deleted, nil }