Files
template/api/src/controllers/current-user-controller.ts
T
2026-06-19 23:55:45 -07:00

32 lines
927 B
TypeScript

import { User } from "@/models"
import { UsersPolicy } from "@/policies"
import { ShowSerializer } from "@/serializers/current-user"
import BaseController from "@/controllers/base-controller"
export class CurrentUserController extends BaseController {
async show() {
try {
const user = this.currentUser
const policy = this.buildPolicy(user)
if (!policy.show()) {
return this.response.status(403).json({
message: "You are not authorized to view the current user",
})
}
const serializedUser = ShowSerializer.perform(user)
return this.response.json({ user: serializedUser, policy })
} catch (error) {
return this.response.status(400).json({
message: `Error fetching current user: ${error}`,
})
}
}
private buildPolicy(user: User) {
return new UsersPolicy(this.currentUser, user)
}
}
export default CurrentUserController