team.go 743 B

123456789101112131415161718192021222324252627282930313233343536
  1. package teams
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. m "github.com/grafana/grafana/pkg/models"
  5. )
  6. func CanUpdateTeam(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. // TODO: do we need to do something special about external users
  18. // External: false,
  19. }
  20. if err := bus.Dispatch(&cmd); err != nil {
  21. return err
  22. }
  23. for _, member := range cmd.Result {
  24. if member.UserId == user.UserId && member.Permission == int64(m.PERMISSION_ADMIN) {
  25. return nil
  26. }
  27. }
  28. return m.ErrNotAllowedToUpdateTeam
  29. }