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