project_role.go 834 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. }