({ params, response, auth, bouncer }: HttpContextContract)
| 4 | |
| 5 | export default class UsersController { |
| 6 | public async destroy({ params, response, auth, bouncer }: HttpContextContract) { |
| 7 | try { |
| 8 | await auth.use('api').authenticate() |
| 9 | |
| 10 | const user = await User.find(params.id) |
| 11 | |
| 12 | if (!user) { |
| 13 | return response.notFound({ |
| 14 | error: { message: 'User not found' }, |
| 15 | }) |
| 16 | } |
| 17 | |
| 18 | const authenticatedUser = auth.user! |
| 19 | |
| 20 | if (await bouncer.denies('deleteUser' as never, authenticatedUser, user)) { |
| 21 | return response.unauthorized({ |
| 22 | error: { message: 'You are not allowed to delete this user' }, |
| 23 | }) |
| 24 | } |
| 25 | |
| 26 | await user.delete() |
| 27 | |
| 28 | return response.noContent() |
| 29 | } catch (error) { |
| 30 | console.log(error) |
| 31 | Logger.error('Failed to delete user: ', { error: error.message }) |
| 32 | return response.badRequest({ |
| 33 | error: { message: 'Unable delete the user' }, |
| 34 | }) |
| 35 | } |
| 36 | } |
| 37 | } |
nothing calls this directly
no test coverage detected