UNPKG

nhb-express

Version:

Minimal Express + TypeScript scaffolder with modular structure and flexible stack choices.

44 lines (32 loc) 1.4 kB
import configs from '@/configs'; import { authServices } from '@/modules/auth/auth.services'; import catchAsync from '@/utilities/catchAsync'; import sendResponse from '@/utilities/sendResponse'; class AuthControllers { /** * Register a new user */ registerUser = catchAsync(async (req, res) => { const user = await authServices.registerUserInDB(req.body); sendResponse(res, 'User', 'POST', user, 'User registered successfully!'); }); /** * Login a user */ loginUser = catchAsync(async (req, res) => { const { refresh_token, access_token, user } = await authServices.loginUser(req.body); res.cookie('refresh_token', refresh_token, { secure: configs.NODE_ENV === 'production', httpOnly: true, }); sendResponse(res, 'User', 'OK', { user, token: access_token }, 'Login successful!'); }); /** * Generate new access token. */ refreshToken = catchAsync(async (req, res) => { const { refresh_token } = req.cookies; const token = await authServices.refreshToken(refresh_token); sendResponse(res, 'N/A', 'OK', token, 'Successfully retrieved new access token!'); }); /** * Get current logged in user. */ getCurrentUser = catchAsync(async (req, res) => { const user = await authServices.getCurrentUserFromDB(req.user); sendResponse(res, 'User', 'GET', user, 'Successfully retrieved user profile!'); }); } export const authControllers = new AuthControllers();