Files
mbmanager-api/components/user/userController.js
T
2026-08-19 07:08:36 +03:30

115 lines
2.8 KiB
JavaScript

// userController.js
const catchAsync = require('../../globalErrorHandler/catchAsync')
const userService = require('./userService')
const AppError = require("../../globalErrorHandler/AppError");
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.cookie('bm-token', token, {
httpOnly: false,
maxAge: maxAge * 1000,
path: '/',
})
res.status(200).json({
status: 'success',
data: { user, token },
})
})
exports.logoutUser = catchAsync(async (req, res, next) => {
res.cookie('belonging_token', '', {
httpOnly: true,
maxAge: 0,
path: '/',
})
res.cookie('bm-token', '', {
httpOnly: false,
maxAge: 0,
path: '/',
})
res.status(200).json({
status: 'success',
message: 'کاربر خارج شد',
})
})
exports.getAllUsers = catchAsync(async (req, res, next) => {
const users = await userService.getAllUsers(req.query)
res.status(200).json({
status: 'success',
results: users.length,
data: users,
})
})
exports.userGetSelf = catchAsync(async (req, res, next) => {
const user = req.user
if (!user) {
throw new AppError('NotLoggedIn', 403, {})
}
return res.status(200).json({ status: 'success ', data: { user } })
})
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,
})
})