Tokiva-backend-Node / src /controllers /auth.controller.ts
anoderb
feat: initial commit of Tokiva POS Node backend for Hugging Face
ef874e6
Raw
History Blame Contribute Delete
1.98 kB
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);
}
}
}