2026-04-17 14:53:21 +01:00
|
|
|
import { KeycloakAuthGuard } from '../auth/keycloak.guard';
|
|
|
|
|
import { Controller, Get, UseGuards, Request } from '@nestjs/common';
|
2026-04-17 23:42:24 +01:00
|
|
|
import { User } from '@prisma/client';
|
|
|
|
|
import { Request } from 'express';
|
|
|
|
|
import { UserProvisioningGuard } from '../users/user-provisioning.guard';
|
2026-04-17 14:53:21 +01:00
|
|
|
|
2026-04-17 23:42:24 +01:00
|
|
|
type ProfileRequest = Request & {
|
|
|
|
|
user: {
|
|
|
|
|
email?: string;
|
|
|
|
|
name?: string;
|
|
|
|
|
picture?: string;
|
|
|
|
|
email_verified?: boolean;
|
|
|
|
|
roles: string[];
|
|
|
|
|
};
|
|
|
|
|
dbUser?: User;
|
|
|
|
|
};
|
2026-04-17 14:53:21 +01:00
|
|
|
|
|
|
|
|
@Controller('profile')
|
|
|
|
|
export class ProfileController {
|
2026-04-17 23:42:24 +01:00
|
|
|
@UseGuards(KeycloakAuthGuard, UserProvisioningGuard)
|
2026-04-17 14:53:21 +01:00
|
|
|
@Get()
|
2026-04-17 23:42:24 +01:00
|
|
|
getProfile(@Request() req: ProfileRequest) {
|
|
|
|
|
const kc = req.user;
|
2026-04-17 14:53:21 +01:00
|
|
|
return {
|
2026-04-17 23:42:24 +01:00
|
|
|
keycloak: {
|
|
|
|
|
email: kc.email,
|
|
|
|
|
name: kc.name,
|
|
|
|
|
picture: kc.picture,
|
|
|
|
|
email_verified: kc.email_verified,
|
|
|
|
|
roles: kc.roles,
|
|
|
|
|
},
|
|
|
|
|
user: req.dbUser,
|
2026-04-17 14:53:21 +01:00
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|