2019-03-12 07:59:53 -05:00
|
|
|
package teamguardian
|
2019-03-08 07:37:21 -06:00
|
|
|
|
|
|
|
import (
|
2021-12-02 11:08:59 -06:00
|
|
|
"context"
|
|
|
|
|
2019-03-08 07:37:21 -06:00
|
|
|
"github.com/grafana/grafana/pkg/bus"
|
2020-02-29 06:35:15 -06:00
|
|
|
"github.com/grafana/grafana/pkg/models"
|
2019-03-08 07:37:21 -06:00
|
|
|
)
|
|
|
|
|
2021-12-02 11:08:59 -06:00
|
|
|
func CanAdmin(ctx context.Context, bus bus.Bus, orgId int64, teamId int64, user *models.SignedInUser) error {
|
2020-02-29 06:35:15 -06:00
|
|
|
if user.OrgRole == models.ROLE_ADMIN {
|
2019-03-08 08:46:15 -06:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
if user.OrgId != orgId {
|
2020-02-29 06:35:15 -06:00
|
|
|
return models.ErrNotAllowedToUpdateTeamInDifferentOrg
|
2019-03-08 08:46:15 -06:00
|
|
|
}
|
|
|
|
|
2020-02-29 06:35:15 -06:00
|
|
|
cmd := models.GetTeamMembersQuery{
|
2019-03-08 08:46:15 -06:00
|
|
|
OrgId: orgId,
|
|
|
|
TeamId: teamId,
|
|
|
|
UserId: user.UserId,
|
|
|
|
}
|
|
|
|
|
2021-12-02 11:08:59 -06:00
|
|
|
if err := bus.DispatchCtx(ctx, &cmd); err != nil {
|
2019-03-08 08:46:15 -06:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, member := range cmd.Result {
|
2020-02-29 06:35:15 -06:00
|
|
|
if member.UserId == user.UserId && member.Permission == models.PERMISSION_ADMIN {
|
2019-03-08 08:46:15 -06:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-02-29 06:35:15 -06:00
|
|
|
return models.ErrNotAllowedToUpdateTeam
|
2019-03-08 08:46:15 -06:00
|
|
|
}
|