diff --git a/ordinis-admin-ui/src/auth/usePermissions.ts b/ordinis-admin-ui/src/auth/usePermissions.ts index 24391e3..961e7bc 100644 --- a/ordinis-admin-ui/src/auth/usePermissions.ts +++ b/ordinis-admin-ui/src/auth/usePermissions.ts @@ -11,31 +11,46 @@ import { useAuth } from 'react-oidc-context' * * *
Phase 1d: подключим decode JWT → realm_access.roles, и эти hook'и - * начнут возвращать false для users без \`ordinis-schema-reviewer\` / - * \`ordinis-schema-publisher\` ролей. UI hide'ит соответствующие кнопки. + * начнут возвращать false для users без {@code ordinis:schema:reviewer} + * / {@code ordinis:schema:publisher} ролей. UI hide'ит соответствующие + * кнопки. + * + *
Naming convention: roles используют colon-separated namespace
+ * pattern {@code ordinis: До тех пор все logged-in юзеры могут жать любые workflow buttons —
* backend гейт остаётся primary defence.
*/
+const ROLE_SCHEMA_REVIEWER = 'ordinis:schema:reviewer'
+const ROLE_SCHEMA_PUBLISHER = 'ordinis:schema:publisher'
+const ROLE_SCHEMA_MAKER = 'ordinis:schema:maker'
+
/** Может ли актор approve / request_changes / reject schema draft. */
export function useCanReviewSchema(): boolean {
const auth = useAuth()
// TODO Phase 1d: const roles = (auth.user?.profile as { realm_access?: { roles?: string[] } })?.realm_access?.roles ?? []
- // return roles.includes('ordinis-schema-reviewer')
+ // return roles.includes(ROLE_SCHEMA_REVIEWER)
+ void ROLE_SCHEMA_REVIEWER
return auth.isAuthenticated
}
/** Может ли актор publish approved schema draft (bump live version). */
export function useCanPublishSchema(): boolean {
const auth = useAuth()
- // TODO Phase 1d: roles.includes('ordinis-schema-publisher')
+ // TODO Phase 1d: roles.includes(ROLE_SCHEMA_PUBLISHER)
+ void ROLE_SCHEMA_PUBLISHER
return auth.isAuthenticated
}
/** Может ли актор create schema draft (maker side). */
export function useCanCreateSchemaDraft(): boolean {
const auth = useAuth()
- // TODO Phase 1d: roles.includes('ordinis-schema-maker') OR any authenticated
+ // TODO Phase 1d: roles.includes(ROLE_SCHEMA_MAKER) OR any authenticated
+ void ROLE_SCHEMA_MAKER
return auth.isAuthenticated
}