52 lines
1.6 KiB
TypeScript
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', 'user_name'])
|
|
|
|
const user = await User.query().where('user_name', data.user_name).first()
|
|
|
|
if (user) {
|
|
return response.status(401).json({ status: false, message: 'Username 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({ error, status: false, message: 'Invalid credentials' })
|
|
}
|
|
}
|
|
|
|
// Đăng nhập
|
|
async login({ request, auth, response }: HttpContext) {
|
|
const { user_name: userName, password } = request.only(['user_name', 'password'])
|
|
const user = await User.query().where('user_name', userName).first()
|
|
|
|
if (!user) {
|
|
return response.status(401).json({ message: 'Invalid Username or password' })
|
|
}
|
|
|
|
try {
|
|
// So sánh password
|
|
if (user.password !== password) {
|
|
return response.status(401).json({ message: 'Invalid username or password' })
|
|
}
|
|
|
|
return response.json({
|
|
message: 'Login successful',
|
|
user: { id: user.id, email: user.email, userName: user.userName },
|
|
})
|
|
} catch {
|
|
return response.status(401).json({ message: 'Invalid credentials' })
|
|
}
|
|
}
|
|
|
|
// Đăng xuất
|
|
async logout({ auth, response }: HttpContext) {
|
|
return response.json({ message: 'Logged out successfully' })
|
|
}
|
|
}
|