finalize migration (yay)

This commit is contained in:
tw-blue
2025-12-10 22:11:30 +01:00
parent cd6cfec7f3
commit c7d53c88bc
40 changed files with 966 additions and 499 deletions
+18 -27
View File
@@ -1,39 +1,30 @@
import { type Request, type RequestHandler } from "express";
import { type Request, type Response } from "express";
import { KC_SECURITY_NAME, keycloak } from "../services/keycloak/user/index.js";
import { inject } from "../infrastructure/di/index.js";
import {
KC_SECURITY_NAME,
KeycloakUser,
} from "../services/keycloak/user/index.js";
function promisifyMiddleware(
request: Request,
middleware: RequestHandler,
response?: Response,
): Promise<any> {
return new Promise((resolve, reject) => {
middleware(request, response || ({} as any), (next_result: any) => {
console.dir(next_result);
next_result instanceof Error
? reject(next_result)
: resolve(next_result);
});
});
}
const keycloak = inject(KeycloakUser);
async function doKeycloakAuth(
request: Request,
roles?: string[],
response?: Response,
): Promise<any> {
if (roles && roles.length > 0) {
const grant = await keycloak.getGrant(request, response ?? ({} as any));
const allowed = roles.every(role =>
grant.access_token?.hasRealmRole(role),
);
if (allowed) {
return Promise.resolve();
} else {
return Promise.reject(httpError(403, "Forbidden"));
}
if (!roles || roles.length < 1) {
roles = ["default-roles-taekwondo"];
}
const allowed = await keycloak.checkRoles(
roles,
request,
response ?? ({} as any),
);
if (allowed) {
return Promise.resolve();
} else {
return await promisifyMiddleware(request, keycloak.protect(), response);
return Promise.reject(httpError(403, "Forbidden"));
}
}