dashboard_acl.go 1.9 KB

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