diff --git a/models/operator_session_response.go b/models/operator_session_response.go index 552bb5511..b3c4dfed2 100644 --- a/models/operator_session_response.go +++ b/models/operator_session_response.go @@ -40,6 +40,9 @@ type OperatorSessionResponse struct { // operator Operator bool `json:"operator,omitempty"` + // permissions + Permissions map[string][]string `json:"permissions,omitempty"` + // status // Enum: [ok] Status string `json:"status,omitempty"` diff --git a/operatorapi/embedded_spec.go b/operatorapi/embedded_spec.go index d9bb9fe63..b52bca1af 100644 --- a/operatorapi/embedded_spec.go +++ b/operatorapi/embedded_spec.go @@ -2299,6 +2299,15 @@ func init() { "operator": { "type": "boolean" }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, "status": { "type": "string", "enum": [ @@ -6094,6 +6103,15 @@ func init() { "operator": { "type": "boolean" }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, "status": { "type": "string", "enum": [ diff --git a/operatorapi/operator_session.go b/operatorapi/operator_session.go index 0aaf6ffc3..020242063 100644 --- a/operatorapi/operator_session.go +++ b/operatorapi/operator_session.go @@ -41,8 +41,9 @@ func getSessionResponse(session *models.Principal) (*models.OperatorSessionRespo return nil, prepareError(errorGenericInvalidSession) } sessionResp := &models.OperatorSessionResponse{ - Status: models.OperatorSessionResponseStatusOk, - Operator: true, + Status: models.OperatorSessionResponseStatusOk, + Operator: true, + Permissions: map[string][]string{}, } return sessionResp, nil } diff --git a/portal-ui/src/common/SecureComponent/SecureComponent.tsx b/portal-ui/src/common/SecureComponent/SecureComponent.tsx index 817cbd4ac..c62658900 100644 --- a/portal-ui/src/common/SecureComponent/SecureComponent.tsx +++ b/portal-ui/src/common/SecureComponent/SecureComponent.tsx @@ -27,7 +27,7 @@ export const hasPermission = ( return false; } const state = store.getState(); - const sessionGrants = state.console.session.permissions; + const sessionGrants = state.console.session.permissions || {}; const resourceGrants = sessionGrants[resource] || sessionGrants[`arn:aws:s3:::${resource}/*`] || diff --git a/swagger-operator.yml b/swagger-operator.yml index dc142df3f..0225b43af 100644 --- a/swagger-operator.yml +++ b/swagger-operator.yml @@ -983,6 +983,12 @@ definitions: enum: [ ok ] operator: type: boolean + permissions: + type: object + additionalProperties: + type: array + items: + type: string tenantStatus: type: object