dashboard_acl.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package models
  2. import "time"
  3. type PermissionType int
  4. const (
  5. PERMISSION_EDIT PermissionType = 1 << iota
  6. PERMISSION_READ_ONLY_EDIT
  7. PERMISSION_VIEW
  8. )
  9. func (p PermissionType) String() string {
  10. names := map[int]string{
  11. int(PERMISSION_VIEW): "View",
  12. int(PERMISSION_READ_ONLY_EDIT): "Read-only Edit",
  13. int(PERMISSION_EDIT): "Edit",
  14. }
  15. return names[int(p)]
  16. }
  17. // Typed errors
  18. // var (
  19. // ErrDashboardPermissionAlreadyAdded = errors.New("A permission has ")
  20. // )
  21. // Dashboard ACL model
  22. type DashboardAcl struct {
  23. Id int64 `json:"id"`
  24. OrgId int64 `json:"-"`
  25. DashboardId int64 `json:"dashboardId"`
  26. Created time.Time `json:"created"`
  27. Updated time.Time `json:"updated"`
  28. UserId int64 `json:"userId"`
  29. UserGroupId int64 `json:"userGroupId"`
  30. Permissions PermissionType `json:"permissions"`
  31. }
  32. type DashboardAclInfoDTO struct {
  33. Id int64 `json:"id"`
  34. OrgId int64 `json:"-"`
  35. DashboardId int64 `json:"dashboardId"`
  36. Created time.Time `json:"created"`
  37. Updated time.Time `json:"updated"`
  38. UserId int64 `json:"userId"`
  39. UserLogin string `json:"userLogin"`
  40. UserEmail string `json:"userEmail"`
  41. UserGroupId int64 `json:"userGroupId"`
  42. UserGroup string `json:"userGroup"`
  43. PermissionType PermissionType `json:"permissionType"`
  44. Permissions string `json:"permissions"`
  45. }
  46. //
  47. // COMMANDS
  48. //
  49. type AddOrUpdateDashboardPermissionCommand struct {
  50. DashboardId int64 `json:"dashboardId" binding:"Required"`
  51. OrgId int64 `json:"-"`
  52. UserId int64 `json:"userId"`
  53. UserGroupId int64 `json:"userGroupId"`
  54. PermissionType PermissionType `json:"permissionType" binding:"Required"`
  55. }
  56. type RemoveDashboardPermissionCommand struct {
  57. DashboardId int64 `json:"dashboardId" binding:"Required"`
  58. OrgId int64 `json:"-"`
  59. UserId int64 `json:"userId"`
  60. UserGroupId int64 `json:"userGroupId"`
  61. }
  62. //
  63. // QUERIES
  64. //
  65. type GetDashboardPermissionsQuery struct {
  66. DashboardId int64 `json:"dashboardId" binding:"Required"`
  67. Result []*DashboardAclInfoDTO
  68. }