Spaces:
Sleeping
Sleeping
| import { Request, Response, NextFunction } from 'express'; | |
| import { AuthService } from '../services/auth.service'; | |
| import { sukses } from '../utils/response'; | |
| import { AuthenticatedRequest } from '../middlewares/auth.middleware'; | |
| export class AuthController { | |
| static async login(req: Request, res: Response, next: NextFunction) { | |
| try { | |
| const { username, password } = req.body; | |
| const ip = (req.ip || req.socket.remoteAddress || 'unknown').replace('::ffff:', ''); | |
| const userAgent = (req.headers['user-agent'] || 'unknown') as string; | |
| const result = await AuthService.login({ | |
| username, | |
| passwordSecret: password, | |
| ip, | |
| userAgent, | |
| }); | |
| return sukses( | |
| res, | |
| { | |
| access_token: result.accessToken, | |
| refresh_token: result.refreshToken, | |
| token_type: 'bearer', | |
| role: result.user.role, | |
| nama: result.user.nama, | |
| }, | |
| 'Login berhasil' | |
| ); | |
| } catch (error) { | |
| next(error); | |
| } | |
| } | |
| static async refresh(req: Request, res: Response, next: NextFunction) { | |
| try { | |
| const { refresh_token } = req.body; | |
| const result = await AuthService.refresh(refresh_token); | |
| return sukses( | |
| res, | |
| { | |
| access_token: result.accessToken, | |
| refresh_token: result.refreshToken, | |
| token_type: 'bearer', | |
| role: result.role, | |
| }, | |
| 'Token berhasil diperbarui' | |
| ); | |
| } catch (error) { | |
| next(error); | |
| } | |
| } | |
| static async logout(req: AuthenticatedRequest, res: Response, next: NextFunction) { | |
| try { | |
| const ip = (req.ip || req.socket.remoteAddress || 'unknown').replace('::ffff:', ''); | |
| const userAgent = (req.headers['user-agent'] || 'unknown') as string; | |
| const userId = req.user.id; | |
| await AuthService.logout(userId, ip, userAgent); | |
| return sukses(res, null, 'Logout berhasil'); | |
| } catch (error) { | |
| next(error); | |
| } | |
| } | |
| } | |