ATC_SIMPLE/BACKEND/app/controllers/auth_controller.ts

52 lines
1.6 KiB
TypeScript

import type { HttpContext } from '@adonisjs/core/http'
import User from '../models/user.js'
export default class AuthController {
// Đăng ký
async register({ request, response }: HttpContext) {
try {
const data = request.only(['email', 'password', 'full_name'])
const user = await User.query().where('email', data.email).first()
if (user) {
return response.status(401).json({ status: false, message: 'Email is exist' })
}
const newUser = await User.create(data)
return response.json({ status: true, message: 'User created', user: newUser })
} catch (error) {
return response.status(401).json({ status: false, message: 'Invalid credentials' })
}
}
// Đăng nhập
async login({ request, auth, response }: HttpContext) {
const { email, password } = request.only(['email', 'password'])
const user = await User.query().where('email', email).first()
if (!user) {
return response.status(401).json({ message: 'Invalid email or password' })
}
try {
// So sánh password
if (user.password !== password) {
return response.status(401).json({ message: 'Invalid email or password' })
}
return response.json({
message: 'Login successful',
user: { id: user.id, email: user.email, fullName: user.fullName },
})
} catch {
return response.status(401).json({ message: 'Invalid credentials' })
}
}
// Đăng xuất
async logout({ auth, response }: HttpContext) {
return response.json({ message: 'Logged out successfully' })
}
}