feat(permissions): update role-based access checks across dashboard components

- Refactored user role checks in various dashboard pages to utilize the new permissions structure.
- Replaced direct role comparisons with permission checks for enhanced security and maintainability.
- Updated the `validateRequest` function to streamline user role handling and ensure proper access control.
- Improved consistency in permission checks across components, ensuring only authorized users can access specific features.
This commit is contained in:
Mauricio Siu
2025-07-13 02:05:59 -06:00
parent 982a1d5d31
commit a43b8ee2d2
19 changed files with 51 additions and 80 deletions

View File

@@ -16,6 +16,7 @@ import {
findWebServer,
updateWebServer,
} from "@dokploy/server/services/web-server";
import type { Role } from "../db/schema/rbac";
const { handler, api } = betterAuth({
database: drizzleAdapter(db, {
@@ -409,15 +410,7 @@ export const validateRequest = async (request: IncomingMessage) => {
};
}
const mockSession = {
session: {
...session.session,
},
user: {
...session.user,
ownerId: session.user.ownerId,
},
};
let role: Role | null = null;
if (session?.user) {
const member = await db.query.member.findFirst({
where: and(
@@ -432,17 +425,22 @@ export const validateRequest = async (request: IncomingMessage) => {
organization: true,
},
});
if (member?.role) {
mockSession.user.role = member.role;
}
role = member?.role || null;
if (member) {
mockSession.user.ownerId = member.organization.ownerId;
session.user.ownerId = member.organization.ownerId;
} else {
mockSession.user.ownerId = session.user.id;
session.user.ownerId = session.user.id;
}
}
const mockSession = {
session: {
...session.session,
},
user: {
...session.user,
role,
ownerId: session.user.ownerId,
},
};
return mockSession;
};