team.go 662 B

12345678910111213141516171819202122232425262728293031323334
  1. package teamguardian
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. m "github.com/grafana/grafana/pkg/models"
  5. )
  6. func CanAdmin(bus bus.Bus, orgId int64, teamId int64, user *m.SignedInUser) error {
  7. if user.OrgRole == m.ROLE_ADMIN {
  8. return nil
  9. }
  10. if user.OrgId != orgId {
  11. return m.ErrNotAllowedToUpdateTeamInDifferentOrg
  12. }
  13. cmd := m.GetTeamMembersQuery{
  14. OrgId: orgId,
  15. TeamId: teamId,
  16. UserId: user.UserId,
  17. }
  18. if err := bus.Dispatch(&cmd); err != nil {
  19. return err
  20. }
  21. for _, member := range cmd.Result {
  22. if member.UserId == user.UserId && member.Permission == m.PERMISSION_ADMIN {
  23. return nil
  24. }
  25. }
  26. return m.ErrNotAllowedToUpdateTeam
  27. }