// userController.js const catchAsync = require('../../globalErrorHandler/catchAsync') const userService = require('./userService') exports.signup = catchAsync(async (req, res, next) => { const { user, token, cookieOptions } = await userService.signup( req.body.name, req.body.email, req.body.password, req.body.passwordConfirm ) res.cookie('jwt', token, cookieOptions) res.status(200).json({ status: 'success ', data: { user, token } }) }) exports.loginUser = catchAsync(async (req, res, next) => { const { email, password } = req.body const { token, user } = await userService.loginUser(email, password) const maxAge = 60 * 60 * 24 * 90 res.setHeader('Authorization', `Bearer ${token}`) res.cookie('belonging_token', token, { httpOnly: true, maxAge: maxAge * 1000, path: '/', }) res.status(200).json({ status: 'success', data: { user, token }, }) }) exports.logoutUser = catchAsync(async (req, res, next) => { res.cookie('raw-password', '', { httpOnly: true, maxAge: 0, path: '/', }) res.status(200).json({ status: 'success', message: 'کاربر خارج شد', }) }) exports.getAllUsers = catchAsync(async (req, res, next) => { const users = await userService.getAllUsers() res.status(200).json({ status: 'success', results: users.length, data: users, }) }) exports.getUser = catchAsync(async (req, res, next) => { const user = await userService.getUser(req.params.userId) res.status(200).json({ status: 'success', data: user, }) }) exports.createUser = catchAsync(async (req, res, next) => { const user = await userService.createUser(req.body) res.status(201).json({ status: 'success', data: user, }) }) exports.updateUser = catchAsync(async (req, res, next) => { const user = await userService.updateUser(req.params.userId, req.body) res.status(200).json({ status: 'success', data: user, }) }) exports.deleteUser = catchAsync(async (req, res, next) => { await userService.deleteUser(req.params.userId) res.status(204).json({ status: 'success', data: null, }) })