diff --git a/compose/rest/chart.go b/compose/rest/chart.go index 9b2a6e93d..7b3164c53 100644 --- a/compose/rest/chart.go +++ b/compose/rest/chart.go @@ -18,6 +18,7 @@ type ( chartPayload struct { *types.Chart + CanGrant bool `json:"canGrant"` CanUpdateChart bool `json:"canUpdateChart"` CanDeleteChart bool `json:"canDeleteChart"` } @@ -33,6 +34,8 @@ type ( } chartAccessController interface { + CanGrant(context.Context) bool + CanUpdateChart(context.Context, *types.Chart) bool CanDeleteChart(context.Context, *types.Chart) bool } @@ -109,6 +112,8 @@ func (ctrl Chart) makePayload(ctx context.Context, c *types.Chart, err error) (* return &chartPayload{ Chart: c, + CanGrant: ctrl.ac.CanGrant(ctx), + CanUpdateChart: ctrl.ac.CanUpdateChart(ctx, c), CanDeleteChart: ctrl.ac.CanDeleteChart(ctx, c), }, nil diff --git a/compose/rest/module.go b/compose/rest/module.go index 0834de2df..9df1c6288 100644 --- a/compose/rest/module.go +++ b/compose/rest/module.go @@ -16,6 +16,7 @@ type ( Fields []*moduleFieldPayload `json:"fields"` + CanGrant bool `json:"canGrant"` CanUpdateModule bool `json:"canUpdateModule"` CanDeleteModule bool `json:"canDeleteModule"` CanCreateRecord bool `json:"canCreateRecord"` @@ -43,6 +44,8 @@ type ( } moduleAccessController interface { + CanGrant(context.Context) bool + CanUpdateModule(context.Context, *types.Module) bool CanDeleteModule(context.Context, *types.Module) bool CanCreateRecord(context.Context, *types.Module) bool @@ -136,6 +139,8 @@ func (ctrl Module) makePayload(ctx context.Context, m *types.Module, err error) Fields: mfp, + CanGrant: ctrl.ac.CanGrant(ctx), + CanUpdateModule: ctrl.ac.CanUpdateModule(ctx, m), CanDeleteModule: ctrl.ac.CanDeleteModule(ctx, m), CanCreateRecord: ctrl.ac.CanCreateRecord(ctx, m), diff --git a/compose/rest/namespace.go b/compose/rest/namespace.go index 739b43773..86bd1a10f 100644 --- a/compose/rest/namespace.go +++ b/compose/rest/namespace.go @@ -14,6 +14,7 @@ type ( namespacePayload struct { *types.Namespace + CanGrant bool `json:"canGrant"` CanUpdateNamespace bool `json:"canUpdateNamespace"` CanDeleteNamespace bool `json:"canDeleteNamespace"` CanCreateModule bool `json:"canCreateModule"` @@ -33,8 +34,11 @@ type ( } namespaceAccessController interface { + CanGrant(context.Context) bool + CanUpdateNamespace(context.Context, *types.Namespace) bool CanDeleteNamespace(context.Context, *types.Namespace) bool + CanCreateModule(context.Context, *types.Namespace) bool CanCreateChart(context.Context, *types.Namespace) bool CanCreateTrigger(context.Context, *types.Namespace) bool @@ -112,12 +116,14 @@ func (ctrl Namespace) makePayload(ctx context.Context, ns *types.Namespace, err return &namespacePayload{ Namespace: ns, + CanGrant: ctrl.ac.CanGrant(ctx), CanUpdateNamespace: ctrl.ac.CanUpdateNamespace(ctx, ns), CanDeleteNamespace: ctrl.ac.CanDeleteNamespace(ctx, ns), - CanCreateModule: ctrl.ac.CanCreateModule(ctx, ns), - CanCreateChart: ctrl.ac.CanCreateChart(ctx, ns), - CanCreateTrigger: ctrl.ac.CanCreateTrigger(ctx, ns), - CanCreatePage: ctrl.ac.CanCreatePage(ctx, ns), + + CanCreateModule: ctrl.ac.CanCreateModule(ctx, ns), + CanCreateChart: ctrl.ac.CanCreateChart(ctx, ns), + CanCreateTrigger: ctrl.ac.CanCreateTrigger(ctx, ns), + CanCreatePage: ctrl.ac.CanCreatePage(ctx, ns), }, nil } diff --git a/compose/rest/page.go b/compose/rest/page.go index bdd6261d6..1257f0513 100644 --- a/compose/rest/page.go +++ b/compose/rest/page.go @@ -15,6 +15,7 @@ type ( pagePayload struct { *types.Page + CanGrant bool `json:"canGrant"` CanUpdatePage bool `json:"canUpdatePage"` CanDeletePage bool `json:"canDeletePage"` } @@ -31,6 +32,8 @@ type ( } pageAccessController interface { + CanGrant(context.Context) bool + CanUpdatePage(context.Context, *types.Page) bool CanDeletePage(context.Context, *types.Page) bool } @@ -139,6 +142,8 @@ func (ctrl Page) makePayload(ctx context.Context, c *types.Page, err error) (*pa return &pagePayload{ Page: c, + CanGrant: ctrl.ac.CanGrant(ctx), + CanUpdatePage: ctrl.ac.CanUpdatePage(ctx, c), CanDeletePage: ctrl.ac.CanDeletePage(ctx, c), }, nil diff --git a/compose/rest/trigger.go b/compose/rest/trigger.go index ce9d9f7ed..0fbd58765 100644 --- a/compose/rest/trigger.go +++ b/compose/rest/trigger.go @@ -14,6 +14,7 @@ type ( triggerPayload struct { *types.Trigger + CanGrant bool `json:"canGrant"` CanUpdateTrigger bool `json:"canUpdateTrigger"` CanDeleteTrigger bool `json:"canDeleteTrigger"` } @@ -29,6 +30,8 @@ type ( } triggerAccessController interface { + CanGrant(context.Context) bool + CanUpdateTrigger(context.Context, *types.Trigger) bool CanDeleteTrigger(context.Context, *types.Trigger) bool } @@ -110,6 +113,8 @@ func (ctrl Trigger) makePayload(ctx context.Context, t *types.Trigger, err error return &triggerPayload{ Trigger: t, + CanGrant: ctrl.ac.CanGrant(ctx), + CanUpdateTrigger: ctrl.ac.CanUpdateTrigger(ctx, t), CanDeleteTrigger: ctrl.ac.CanDeleteTrigger(ctx, t), }, nil