mirror of
https://github.com/ArthurDanjou/artdanj-shortener.git
synced 2026-01-21 14:23:19 +01:00
Create user methods
This commit is contained in:
@@ -1,41 +1,52 @@
|
||||
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
|
||||
import User from "App/Models/User";
|
||||
import UserStoreValidator from "App/Validators/users/UserStoreValidator";
|
||||
import UserUpdateValidator from "App/Validators/users/UserUpdateValidator";
|
||||
import Env from "@ioc:Adonis/Core/Env";
|
||||
|
||||
export default class UsersController {
|
||||
|
||||
public async login ({request, auth, response}: HttpContextContract) {
|
||||
const email = request.input('email')
|
||||
const password = request.input('password')
|
||||
|
||||
const token = await auth.use('api').attempt(email, password, {
|
||||
expiresIn: '2 days'
|
||||
})
|
||||
public async index ({ response }: HttpContextContract) {
|
||||
return response.status(200).send({
|
||||
token: token.toJSON()
|
||||
users: await User.all()
|
||||
})
|
||||
}
|
||||
|
||||
public async createInfiniteToken ({response, request, auth}: HttpContextContract) {
|
||||
const email = request.input('email')
|
||||
const password = request.input('password')
|
||||
const token = await auth.use('api').attempt(email, password)
|
||||
public async store ({ request, response }: HttpContextContract) {
|
||||
const data = await request.validate(UserStoreValidator)
|
||||
return response.status(200).send({
|
||||
token: token.toJSON()
|
||||
user: await User.create(data)
|
||||
})
|
||||
}
|
||||
|
||||
public async logout ({response, auth, i18n}: HttpContextContract) {
|
||||
await auth.use('api').revoke()
|
||||
public async show ({ params, response }: HttpContextContract) {
|
||||
return response.status(200).send({
|
||||
message: i18n.formatMessage('messages.logout')
|
||||
user: await User.findOrFail(params.id)
|
||||
})
|
||||
}
|
||||
|
||||
public async me ({response, auth}: HttpContextContract) {
|
||||
await auth.authenticate()
|
||||
public async update ({ request, params, response }: HttpContextContract) {
|
||||
const user = await User.findOrFail(params.id)
|
||||
const data = await request.validate(UserUpdateValidator)
|
||||
await user.merge(data).save()
|
||||
|
||||
return response.status(200).send({
|
||||
user: auth.user
|
||||
user
|
||||
})
|
||||
}
|
||||
|
||||
public async destroy ({ response, params, auth }: HttpContextContract) {
|
||||
const user = await User.findOrFail(params.id)
|
||||
const admin = await User.findBy('email', Env.get('ADMIN_USER'))
|
||||
|
||||
if (auth.user?.id != admin?.id) {
|
||||
return response.unauthorized()
|
||||
}
|
||||
|
||||
await user.delete()
|
||||
return response.status(200).send({
|
||||
message: 'User successfully deleted!'
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user