role.go 832 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package models
  2. import (
  3. "github.com/porter-dev/porter/api/types"
  4. "gorm.io/gorm"
  5. )
  6. // The roles available for a project
  7. const (
  8. RoleAdmin string = "admin"
  9. RoleDeveloper string = "developer"
  10. RoleViewer string = "viewer"
  11. )
  12. // Role type that extends gorm.Model
  13. type Role struct {
  14. gorm.Model
  15. types.Role
  16. }
  17. // RoleExternal represents the Role type that is sent over REST
  18. type RoleExternal struct {
  19. types.Role
  20. ID uint `json:"id"`
  21. }
  22. // Externalize generates an external Role to be shared over REST
  23. func (r *Role) Externalize() *RoleExternal {
  24. return &RoleExternal{
  25. ID: r.ID,
  26. Role: types.Role{
  27. Kind: r.Kind,
  28. UserID: r.UserID,
  29. ProjectID: r.ProjectID,
  30. },
  31. }
  32. }
  33. func (r *Role) ToRoleType() *types.Role {
  34. return &types.Role{
  35. Kind: r.Kind,
  36. UserID: r.UserID,
  37. ProjectID: r.ProjectID,
  38. }
  39. }