32 lines
927 B
TypeScript
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
|