1
0
Fork 0
mirror of https://codeberg.org/MarkusThielker/next-ory.git synced 2025-04-19 09:01:18 +00:00

NORY-59: replace 'force-admin-role' with new permission

This commit is contained in:
Markus Thielker 2025-04-04 19:48:39 +02:00 committed by Markus Thielker
parent 6b80e93bf0
commit eff751996c
4 changed files with 13 additions and 11 deletions

View file

@ -1,14 +1,15 @@
import { StatusCard } from '@/components/status-card'; import { StatusCard } from '@/components/status-card';
import { hydraMetadata, ketoMetadata, kratosMetadata } from '@/lib/action/metadata'; import { hydraMetadata, ketoMetadata, kratosMetadata } from '@/lib/action/metadata';
import { checkPermission, requireRole, requireSession } from '@/lib/action/authentication'; import { checkPermission, requirePermission, requireSession } from '@/lib/action/authentication';
import InsufficientPermission from '@/components/insufficient-permission'; import InsufficientPermission from '@/components/insufficient-permission';
import { permission, relation } from '@/lib/permission';
export default async function RootPage() { export default async function RootPage() {
const session = await requireSession(); const session = await requireSession();
const identityId = session.identity!.id; const identityId = session.identity!.id;
await requireRole('admin', identityId); await requirePermission(permission.stack.dashboard, relation.access, identityId);
const pmAccessStackStatus = await checkPermission(permission.stack.status, relation.access, identityId); const pmAccessStackStatus = await checkPermission(permission.stack.status, relation.access, identityId);

View file

@ -3,8 +3,9 @@ import { IdentityDataTable } from '@/app/(inside)/user/data-table';
import { SearchInput } from '@/components/search-input'; import { SearchInput } from '@/components/search-input';
import { queryIdentities } from '@/lib/action/identity'; import { queryIdentities } from '@/lib/action/identity';
import { IdentityPagination } from '@/components/pagination'; import { IdentityPagination } from '@/components/pagination';
import { checkPermission, requireRole, requireSession } from '@/lib/action/authentication'; import { checkPermission, requirePermission, requireSession } from '@/lib/action/authentication';
import InsufficientPermission from '@/components/insufficient-permission'; import InsufficientPermission from '@/components/insufficient-permission';
import { permission, relation } from '@/lib/permission';
export default async function UserPage( export default async function UserPage(
{ {
@ -17,7 +18,7 @@ export default async function UserPage(
const session = await requireSession(); const session = await requireSession();
const identityId = session.identity!.id; const identityId = session.identity!.id;
await requireRole('admin', identityId); await requirePermission(permission.stack.dashboard, relation.access, identityId);
const pmAccessUser = await checkPermission(permission.user.it, relation.access, identityId); const pmAccessUser = await checkPermission(permission.user.it, relation.access, identityId);
const pmEditUser = await checkPermission(permission.user.it, relation.edit, identityId); const pmEditUser = await checkPermission(permission.user.it, relation.edit, identityId);

View file

@ -1,5 +1,6 @@
const permission = { export const permission = {
stack: { stack: {
dashboard: 'admin.stack.dashboard',
status: 'admin.stack.status', status: 'admin.stack.status',
}, },
user: { user: {
@ -9,7 +10,7 @@ const permission = {
}, },
}; };
const relation = { export const relation = {
access: 'access', access: 'access',
edit: 'edit', edit: 'edit',
delete: 'delete', delete: 'delete',

View file

@ -1,5 +1,6 @@
import { NextRequest, NextResponse } from 'next/server'; import { NextRequest, NextResponse } from 'next/server';
import { checkRole, getSession } from '@/lib/action/authentication'; import { checkPermission, getSession } from '@/lib/action/authentication';
import { permission, relation } from '@/lib/permission';
export async function middleware(request: NextRequest) { export async function middleware(request: NextRequest) {
@ -19,10 +20,8 @@ export async function middleware(request: NextRequest) {
return NextResponse.redirect(url!); return NextResponse.redirect(url!);
} }
const allowed = await checkRole( const allowed = await checkPermission(permission.stack.dashboard, relation.access, session.identity!.id);
'admin',
session!.identity!.id,
);
if (allowed) { if (allowed) {
if (request.nextUrl.pathname === '/unauthorised') { if (request.nextUrl.pathname === '/unauthorised') {