project_role.go 981 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package models
  2. import (
  3. "fmt"
  4. "github.com/porter-dev/porter/api/types"
  5. "gorm.io/gorm"
  6. )
  7. type ProjectRole struct {
  8. gorm.Model
  9. UniqueID string `gorm:"unique"`
  10. ProjectID uint
  11. PolicyUID string
  12. Name string
  13. Users []User `gorm:"many2many:user_roles"`
  14. }
  15. func (role *ProjectRole) ToProjectRoleType(policy *types.PolicyDocument) *types.ProjectRole {
  16. res := &types.ProjectRole{
  17. ID: role.UniqueID,
  18. Name: role.Name,
  19. Policy: policy,
  20. }
  21. for _, user := range role.Users {
  22. res.Users = append(res.Users, user.ID)
  23. }
  24. return res
  25. }
  26. func (role *ProjectRole) IsDefaultRole() bool {
  27. return role.UniqueID == fmt.Sprintf("%d-%s", role.ProjectID, types.RoleAdmin) ||
  28. role.UniqueID == fmt.Sprintf("%d-%s", role.ProjectID, types.RoleDeveloper) ||
  29. role.UniqueID == fmt.Sprintf("%d-%s", role.ProjectID, types.RoleViewer)
  30. }
  31. func (role *ProjectRole) GetUserIDs() []uint {
  32. var ids []uint
  33. for _, user := range role.Users {
  34. ids = append(ids, user.ID)
  35. }
  36. return ids
  37. }