Create a parameter decorator that types the request once instead of exposing `@Request() req` throughout controllers. ```ts export interface RequestWithUser extends Request { user: User; } export const CurrentUser = createParamDecorator( (_data: unknown, ctx: ExecutionContext): User => ctx.switchToHttp().getRequest<RequestWithUser>().user, ); ``` Use it as `create(@CurrentUser() user: User)`. The authentication guard remains responsible for populating `request.user`; the decorator should only...
Installs into .claude/skills of the current project.
Are you the author of Nestjs Controllers Services?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-nestjs-controllers-services-agent-skills-standard)
Create a parameter decorator that types the request once instead of exposing `@Request() req` throughout controllers.
```ts
export interface RequestWithUser extends Request {
user: User;
}
export const CurrentUser = createParamDecorator(
(_data: unknown, ctx: ExecutionContext): User =>
ctx.switchToHttp().getRequest<RequestWithUser>().user,
);
```
Use it as `create(@CurrentUser() user: User)`. The authentication guard remains responsible for populating `request.user`; the decorator should only retrieve it. Keep controllers thin and put user-related business rules in a service.