Create user methods

This commit is contained in:
2021-10-21 22:07:49 +02:00
parent 53679fde02
commit bc88d11e62
3 changed files with 81 additions and 19 deletions

View File

@@ -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!'
})
}
}

View File

@@ -0,0 +1,24 @@
import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext'
import {rules, schema} from '@ioc:Adonis/Core/Validator'
export default class UserStoreValidator {
constructor (protected ctx: HttpContextContract) {}
public schema = schema.create({
email: schema.string({ trim: true }, [
rules.email(),
rules.required(),
rules.unique({
table: 'users',
column: 'email'
})
]),
password: schema.string({ trim: true },
[
rules.confirmed()
]
)
})
public messages = {}
}

View File

@@ -0,0 +1,27 @@
import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext'
import {rules, schema} from '@ioc:Adonis/Core/Validator'
export default class UserUpdateValidator {
constructor (protected ctx: HttpContextContract) {}
public schema = schema.create({
email: schema.string.optional({ trim: true },
[
rules.email(),
rules.unique(
{
table: 'users',
column: 'email'
})
]
),
password: schema.string.optional({ trim: true },
[
rules.confirmed(),
rules.minLength(8)
]
)
})
public messages = {}
}