81 lines
1.6 KiB
Go
81 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"github.com/larkox/mattermost-plugin-badges/badgesmodel"
|
|
"github.com/mattermost/mattermost-server/v5/model"
|
|
)
|
|
|
|
func (p *Plugin) filterGrantBadges(user *model.User) ([]*badgesmodel.Badge, error) {
|
|
badges, err := p.store.GetRawBadges()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
types, err := p.store.GetRawTypes()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
out := []*badgesmodel.Badge{}
|
|
for _, b := range badges {
|
|
badgeType := types.GetType(b.Type)
|
|
if badgeType == nil {
|
|
p.mm.Log.Debug("Badge with missing type", "badge", b)
|
|
continue
|
|
}
|
|
if canGrantBadge(user, p.badgeAdminUserID, b, badgeType) {
|
|
out = append(out, b)
|
|
}
|
|
}
|
|
|
|
return out, nil
|
|
}
|
|
|
|
func (p *Plugin) filterCreateBadgeTypes(user *model.User) (badgesmodel.BadgeTypeList, error) {
|
|
types, err := p.store.GetRawTypes()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
out := badgesmodel.BadgeTypeList{}
|
|
for _, t := range types {
|
|
if canCreateBadge(user, p.badgeAdminUserID, t) {
|
|
out = append(out, t)
|
|
}
|
|
}
|
|
|
|
return out, nil
|
|
}
|
|
|
|
func (p *Plugin) filterEditTypes(user *model.User) (badgesmodel.BadgeTypeList, error) {
|
|
types, err := p.store.GetRawTypes()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
out := badgesmodel.BadgeTypeList{}
|
|
for _, t := range types {
|
|
if canEditType(user, p.badgeAdminUserID, t) {
|
|
out = append(out, t)
|
|
}
|
|
}
|
|
|
|
return out, nil
|
|
}
|
|
|
|
func (p *Plugin) filterEditBadges(user *model.User) ([]*badgesmodel.Badge, error) {
|
|
bb, err := p.store.GetRawBadges()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
out := []*badgesmodel.Badge{}
|
|
for _, b := range bb {
|
|
if canEditBadge(user, p.badgeAdminUserID, b) {
|
|
out = append(out, b)
|
|
}
|
|
}
|
|
|
|
return out, nil
|
|
}
|