Files
Exchange/server/routes/admin.js
2025-11-07 22:24:40 +01:00

690 lines
37 KiB
JavaScript
Executable File

"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
exports.__esModule = true;
exports.adminRoutes = void 0;
var express = require("express");
var logger_1 = require("../api/logger");
var myError_1 = require("../api/myError");
var auth_1 = require("../middlewares/auth");
var user_1 = require("../db/user");
var admin_1 = require("../db/admin");
var currencies_1 = require("../db/currencies");
var validation_1 = require("../middlewares/validation");
var response_1 = require("../middlewares/response");
var tryCtach_1 = require("../middlewares/tryCtach");
var roles = ['Admin', 'Manager', 'Supporter'];
var managerEditableFields = ['name', 'lastName', 'email', 'isActive', 'role'];
var supporterEditableFields = ['name', 'lastName', 'email', 'isActive', 'role'];
var userEditableFields = ['isActive', 'userType'];
exports.adminRoutes = express.Router();
/// ///////////////////////////////////////////////////////////////////////////////////////////////
/// ///////////////////////////////////////////////////////////////////////////////////////////////
/// ///////////////////// AUTH ENDPOINTS ////////////////////////////////////////////////////////
/// ///////////////////////////////////////////////////////////////////////////////////////////////
/// ///////////////////////////////////////////////////////////////////////////////////////////////
exports.adminRoutes.post('/addCurrency',
// isAdmin,
validation_1.userValidationRules('body', 'currencyName'), validation_1.userValidationRules('body', 'persianName'), validation_1.userValidationRules('body', 'abName'), validation_1.validate, tryCtach_1["default"](function (req, res, next) {
var currencyName = req.body.currencyName;
var perName = req.body.persianName;
var abName = req.body.abName;
var icon = req.body.icon;
currencies_1.Currencies.findOne({ name: currencyName })
.then(function (curr) {
if (curr) {
var error = new myError_1["default"]('this currency is already exsis', 400, 5, 'ارز فوق وجود دارد !', 'خطا رخ داد');
next(error);
}
else {
if ((currencyName === 'BITCOIN' && perName === 'بیت کوین' && abName === 'BTC')
|| (currencyName === 'RIAL' && perName === 'ریال' && abName === 'IRR')
|| (currencyName === 'TRON' && perName === 'ترون' && abName === 'TRX')
|| (currencyName === 'ETHEREUM' && perName === 'اتریوم' && abName === 'ETH')) {
var currency = {
name: currencyName,
per_name: perName,
ab_name: abName,
icon: icon
};
var newCurrency_1 = new currencies_1.Currencies(__assign({}, currency));
newCurrency_1.save()
.then(function () {
response_1["default"](res, "currency created successfully", newCurrency_1._id);
})["catch"](function (err) {
next(err);
});
}
else {
var error = new myError_1["default"]('Currency persian name or ab name are not match with currency name', 400, 11, 'نام فارسی ارز یا نام مخفف ارز با نام ارز مطابقت ندارد.', 'خطا رخ داد');
next(error);
}
}
})["catch"](function (err) {
next(err);
});
}));
exports.adminRoutes.post('/register', validation_1.userValidationRules('body', 'email'), validation_1.userValidationRules('body', 'password'), validation_1.userValidationRules('body', 'name'), validation_1.userValidationRules('body', 'lastName'), validation_1.validate, tryCtach_1["default"](function (req, res, next) {
var email = req.body.email;
var body = {
name: req.body.name,
lastName: req.body.lastName,
email: email,
password: req.body.password,
role: roles[0]
};
admin_1.Admin.findOne({ role: roles[0] })
.then(function (person) {
if (person && person.role === roles[0]) {
var error = new myError_1["default"]('The admin already exists!', 400, 4, 'ادمین قبلا ثبت شده است!', 'خطا رخ داد');
next(error);
}
else {
var user_2 = new admin_1.Admin(__assign({}, body));
user_2.save()
.then(function () {
var data = {
email: user_2.email,
role: user_2.role
};
response_1["default"](res, 'Registration is done successfully', data);
})["catch"](function (err) {
if (err.name = 'MongoError' && err.code === 11000) {
logger_1.logger.error("The save action on User Collection with document " + email + " has some errors: " + err);
var error = new myError_1["default"]('The user has registered already!', 400, 9, 'شما قبلا ثبت نام کرده اید!', 'خطا رخ داد');
next(error);
}
else {
logger_1.logger.error("The save action on User Collection with document " + email + " has some errors: " + err);
var error = new myError_1["default"]('Error happened during the registration!', 500, 9, 'در فرآیند ثبت نام مشکلی پیش آمده است!', 'خطا در سرور');
next(error);
}
});
}
})["catch"](function (err) {
next(err);
});
}));
exports.adminRoutes.post('/login', validation_1.userValidationRules('body', 'email'), validation_1.userValidationRules('body', 'password'), validation_1.validate,
// preventBruteForce,
tryCtach_1["default"](function (req, res, next) {
var agent = req.useragent;
admin_1.Admin.findOne({ email: req.body.email })
.then(function (person) {
if (!person) {
var error = new myError_1["default"]('Email or Password are not valid!', 400, 8, 'ایمیل یا گذرواژه معتبر نیستند!', 'خطا رخ داد');
next(error);
}
else if (person.isActive !== true) {
var error = new myError_1["default"]('The account is not active!', 400, 18, 'حساب کاربری شما غیرفعال شده است!', 'خطا رخ داد');
next(error);
}
else {
person.comparePasswordPromise(req.body.password)
.then(function (isMatch) {
if (!isMatch) {
logger_1.logger.warn('Passwords are not match');
var error = new myError_1["default"]('Email or Password are not valid!', 400, 8, 'ایمیل یا گذرواژه معتبر نیستند!', 'خطا رخ داد');
next(error);
}
else {
var adminActivity = {
action: 'LOGIN',
timestamp: Date.now(),
device: agent.source,
ip: req.ip
};
person.adminActivities.push(adminActivity);
person.save()
.then(function () {
req.session.adminId = person._id;
var profile = {
name: person.name,
lastName: person.lastName,
userId: person._id,
role: person.role
};
response_1["default"](res, '', profile);
})["catch"](function (err) {
next(err);
});
}
})["catch"](function (err) {
next(err);
});
}
})["catch"](function (err) {
next(err);
});
}));
exports.adminRoutes.post('/changePassword', auth_1.isAdmin, validation_1.userValidationRules('body', 'password'), validation_1.userValidationRules('body', 'newPassword'), validation_1.validate, tryCtach_1["default"](function (req, res, next) {
var adminId = req.session.adminId;
admin_1.Admin.findOne({ _id: adminId })
.then(function (person) {
if (person && person._id.toString() === adminId) {
person.comparePasswordPromise(req.body.password)
.then(function (isMatch) {
if (!isMatch) {
logger_1.logger.warn('Password is not valid!');
var error = new myError_1["default"]('Inputs are not valid!', 400, 15, 'ورودی های درخواستی معتبر نیستند!', 'خطا رخ داد');
next(error);
}
else {
person.password = req.body.newPassword;
person.save()
.then(function () {
response_1["default"](res, 'password is successfuly changed');
})["catch"](function (err) {
next(err);
});
}
})["catch"](function (err) {
next(err);
});
}
else {
logger_1.logger.warn('Email address is not valid!');
var error = new myError_1["default"]('UserId is not valid!', 400, 12, 'آدرس ایمیل معتبر نیست!', 'خطا رخ داد');
next(error);
}
})["catch"](function (err) {
next(err);
});
}));
// This end point delete "Token" of users who want to logout from MongoDB.
exports.adminRoutes.get('/logout', auth_1.isAdmin, tryCtach_1["default"](function (req, res, next) {
var agant = req.useragent;
var userActivity = {
action: 'LOGOUT',
timestamp: Date.now(),
device: agant.source,
ip: req.ip
};
user_1.User.findOneAndUpdate({ _id: req.session.userId }, { $push: { userActivities: userActivity } })["catch"](function (err) {
logger_1.logger.error("Updating user activity has some error: " + err + " ");
});
req.session.destroy();
response_1["default"](res);
}));
/// ///////////////////////////////////////////////////////////////////////////////////////////////
/// ///////////////////////////////////////////////////////////////////////////////////////////////
/// ///////////////////// ADMINS ENDPOINTS ////////////////////////////////////////////////////////
/// ///////////////////////////////////////////////////////////////////////////////////////////////
/// ///////////////////////////////////////////////////////////////////////////////////////////////
exports.adminRoutes.get('/getTheManager', auth_1.isAdmin, validation_1.userValidationRules('query', 'username'), validation_1.validate, tryCtach_1["default"](function (req, res, next) {
var username = req.query.username;
admin_1.Admin.findOne({ $and: [{ email: username }, { role: roles[1] }] })
.then(function (person) {
if (person && person.email === username) {
var result = {
_id: person._id,
name: person.name,
lastName: person.lastName,
email: person.email,
isActive: person.isActive === true ?
'مجوز فعالیت دارد' :
'مجوز فعالیت او لغو شده است',
role: 'مدیر',
adminActivities: person.adminActivities
};
response_1["default"](res, '', result);
}
else {
var error = new myError_1["default"]('The Manager does not exist!', 400, 11, 'چنین مدیری وجود ندارد!', 'خطا رخ داد');
next(error);
}
})["catch"](function (err) {
next(err);
});
}));
exports.adminRoutes.get('/getManagersList', auth_1.isAdmin, tryCtach_1["default"](function (req, res, next) {
var adminId = req.session.adminId;
admin_1.Admin.findOne({ _id: adminId })
.then(function (person) {
if (person && person._id.toString() === adminId && person.role === roles[0]) {
admin_1.Admin.find({ role: roles[1] })
.then(function (managers) {
managers = managers.map(function (i) {
return {
lastName: i.lastName,
username: i.email,
isActive: i.isActive ?
'مجوز فعالیت دارد' :
'مجوز فعالیت او لغو شده است'
};
});
response_1["default"](res, '', managers);
})["catch"](function (err) {
next(err);
});
}
else {
var error = new myError_1["default"]('You are not authorized to do this task!', 400, 1, 'شما مجاز به انجام چنین کاری نیستید!', 'خطا رخ داد');
next(error);
}
})["catch"](function (err) {
next(err);
});
}));
exports.adminRoutes.post('/editManagers', auth_1.isAdmin, validation_1.userValidationRules('body', '_id'), validation_1.userValidationRules('body', 'managerName'), validation_1.userValidationRules('body', 'managerLastName'), validation_1.userValidationRules('body', 'managerEmail'), validation_1.userValidationRules('body', 'managerIsActive'), validation_1.userValidationRules('body', 'managerRole'), validation_1.validate, tryCtach_1["default"](function (req, res, next) {
var adminId = req.session.adminId;
var managerId = req.body._id;
var body = {
name: req.body.managerName,
lastName: req.body.managerLastName,
email: req.body.managerEmail,
isActive: req.body.managerIsActive,
role: req.body.managerRole
};
admin_1.Admin.findOne({ _id: adminId })
.then(function (person) {
if (person.role === roles[0]) {
admin_1.Admin.findOne({ _id: managerId })
.then(function (manager) { return __awaiter(void 0, void 0, void 0, function () {
var error;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!(manager && manager._id.toString() === managerId)) return [3 /*break*/, 2];
return [4 /*yield*/, Object.keys(body).map(function (element) {
if (body["" + element] || ((element === 'isActive') && (body['isActive'] === true || body['isActive'] === false))) {
if (managerEditableFields.includes(element)) {
manager["" + element] = body["" + element];
}
else {
logger_1.logger.warn('Some fields are not existed or valid.');
var error = new myError_1["default"]('Some fields are not existed or valid.', 400, 1, 'برخی از فیلدهای درخواستی ناموجود یا نامعنبر است!', 'خطا رخ داد');
throw (error);
}
}
})];
case 1:
_a.sent();
manager.save()
.then(function () {
var result = {
_id: manager._id,
name: manager.name,
lastName: manager.lastName,
email: manager.email,
isActive: manager.isActive,
role: manager.role,
adminActivities: manager.adminActivities
};
response_1["default"](res, 'The data is chenged successfully!', result);
})["catch"](function (err) {
next(err);
});
return [3 /*break*/, 3];
case 2:
logger_1.logger.warn('The manager does not exist!');
error = new myError_1["default"]('The manager does not exist!', 400, 1, 'چنین مدیری در سامانه ثبت نشده است!', 'خطا رخ داد');
next(error);
_a.label = 3;
case 3: return [2 /*return*/];
}
});
}); })["catch"](function (err) {
var message = err.message ? err.message : err;
logger_1.logger.error(message);
next(err);
});
}
else {
logger_1.logger.warn('You are not authorized to do this task!');
var error = new myError_1["default"]('You are not authorized to do this task!', 400, 1, 'شما مجاز به انجام چنین کاری نیستید!', 'خطا رخ داد');
next(error);
}
})["catch"](function (err) {
next(err);
});
}));
exports.adminRoutes.post('/addManagers', auth_1.isAdmin, validation_1.userValidationRules('body', 'email'), validation_1.userValidationRules('body', 'password'), validation_1.userValidationRules('body', 'name'), validation_1.userValidationRules('body', 'lastName'), validation_1.validate, tryCtach_1["default"](function (req, res, next) {
var adminId = req.session.adminId;
admin_1.Admin.findOne({ _id: adminId })
.then(function (person) {
if (person.role === roles[0]) {
var admin_2 = new admin_1.Admin({
email: req.body.email,
password: req.body.password,
name: req.body.name,
lastName: req.body.lastName,
role: roles[1]
});
admin_2.save()
.then(function () {
var manager = {
email: admin_2.email,
name: admin_2.name,
lastName: admin_2.lastName,
role: admin_2.role
};
response_1["default"](res, 'The manager is added successfully!', manager);
})["catch"](function (err) {
if (err.name = 'MongoError' && err.code === 11000) {
logger_1.logger.warn("The save action on User Collection with document " + req.body.lastName + " has some errors: " + err);
var error = new myError_1["default"]('The user has registered already!', 400, 9, 'کاربر قبلا ثبت نام کرده است!', 'خطا رخ داد');
next(error);
}
else {
logger_1.logger.error("The save action on User Collection with document " + req.body.lastName + " has some errors: " + err);
var error = new myError_1["default"]('Error happened during the registration!', 500, 9, 'در فرآیند ثبت نام مشکلی پیش آمده است!', 'خطا رخ داد');
next(error);
}
});
}
else {
var error = new myError_1["default"]('You are not authorized to do this task!', 400, 1, 'شما مجاز به انجام چنین کاری نیستید!', 'خطا رخ داد');
next(error);
}
})["catch"](function (err) {
next(err);
});
}));
exports.adminRoutes.get('/getTheSupporter', validation_1.userValidationRules('query', 'username'), validation_1.validate, auth_1.isAdmin, tryCtach_1["default"](function (req, res, next) {
var username = req.query.username;
admin_1.Admin.findOne({ $and: [{ email: username }, { role: roles[2] }] })
.then(function (person) {
if (person && person.email === username) {
var result = {
_id: person._id,
name: person.name,
lastName: person.lastName,
email: person.email,
isActive: person.isActive === true ?
'مجوز فعالیت دارد' :
'مجوز فعالیت او لغو شده است',
role: 'پشتیبان',
adminActivities: person.adminActivities
};
response_1["default"](res, '', result);
}
else {
var error = new myError_1["default"]('The supporter does not exist!', 400, 11, 'چنین پشتیبانی وجود ندارد!', 'خطا رخ داد');
next(error);
}
})["catch"](function (err) {
next(err);
});
}));
exports.adminRoutes.get('/getSupportersList', auth_1.isAdmin, tryCtach_1["default"](function (req, res, next) {
var adminId = req.session.adminId;
admin_1.Admin.findOne({ _id: adminId })
.then(function (person) {
if (person && person._id.toString() === adminId && [roles[0], roles[1]].includes(person.role)) {
admin_1.Admin.find({ role: roles[2] })
.then(function (supporters) {
supporters = supporters.map(function (i) {
return {
lastName: i.lastName,
username: i.email,
isActive: i.isActive ?
'مجوز فعالیت دارد' :
'مجوز فعالیت او لغو شده است'
};
});
response_1["default"](res, '', supporters);
})["catch"](function (err) {
next(err);
});
}
else {
var error = new myError_1["default"]('You are not authorized to do this task!', 400, 1, 'شما مجاز به انجام چنین کاری نیستید!', 'خطا رخ داد');
next(error);
}
})["catch"](function (err) {
next(err);
});
}));
exports.adminRoutes.post('/editSupporters', auth_1.isAdmin, validation_1.userValidationRules('body', '_id'), validation_1.userValidationRules('body', 'supporterName'), validation_1.userValidationRules('body', 'supporterLastName'), validation_1.userValidationRules('body', 'supporterEmail'), validation_1.userValidationRules('body', 'supporterIsActive'), validation_1.userValidationRules('body', 'supporterRole'), validation_1.validate, tryCtach_1["default"](function (req, res, next) {
var adminId = req.session.adminId;
var supporterId = req.body._id;
var body = {
name: req.body.supporterName,
lastName: req.body.supporterLastName,
email: req.body.supporterEmail,
isActive: req.body.supporterIsActive,
role: req.body.supporterRole
};
admin_1.Admin.findOne({ _id: adminId })
.then(function (person) {
if (person.role === roles[0] || person.role === roles[1]) {
admin_1.Admin.findOne({ _id: supporterId })
.then(function (supporter) { return __awaiter(void 0, void 0, void 0, function () {
var error;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!(supporter && supporter._id.toString() === supporterId)) return [3 /*break*/, 2];
return [4 /*yield*/, Object.keys(body).map(function (element) {
if (body["" + element] || (element === 'isActive') && (body['isActive'] === true || body['isActive'] === false)) {
console.log(element);
if (supporterEditableFields.includes(element)) {
supporter["" + element] = body["" + element];
}
else {
logger_1.logger.warn('Some fields are not existed or valid.');
var error = new myError_1["default"]('Some fields are not existed or valid.', 400, 1, 'برخی از فیلدهای درخواستی ناموجود یا نامعنبر است!', 'خطا رخ داد');
throw (error);
}
}
})];
case 1:
_a.sent();
supporter.save()
.then(function () {
var result = {
_id: supporter._id,
name: supporter.name,
lastName: supporter.lastName,
email: supporter.email,
isActive: supporter.isActive,
role: supporter.role,
adminActivities: supporter.adminActivities
};
response_1["default"](res, 'The data is chenged successfully!', result);
})["catch"](function (err) {
var message = err.message ? err.message : err;
logger_1.logger.error(message);
next(err);
});
return [3 /*break*/, 3];
case 2:
logger_1.logger.warn('The supporter does not exist!');
error = new myError_1["default"]('The supporter does not exist!', 400, 1, 'چنین پشتیبانی در سامانه ثبت نشده است!', 'خطا رخ داد');
next(error);
_a.label = 3;
case 3: return [2 /*return*/];
}
});
}); })["catch"](function (err) {
var message = err.message ? err.message : err;
logger_1.logger.error(message);
next(err);
});
}
else {
logger_1.logger.warn('You are not authorized to do this task!');
var error = new myError_1["default"]('You are not authorized to do this task!', 400, 1, 'شما مجاز به انجام چنین کاری نیستید!', 'خطا رخ داد');
next(error);
}
})["catch"](function (err) {
next(err);
});
}));
exports.adminRoutes.post('/addSupporters', auth_1.isAdmin, validation_1.userValidationRules('body', 'email'), validation_1.userValidationRules('body', 'password'), validation_1.userValidationRules('body', 'name'), validation_1.userValidationRules('body', 'lastName'), validation_1.validate, tryCtach_1["default"](function (req, res, next) {
var adminId = req.session.adminId;
admin_1.Admin.findOne({ _id: adminId })
.then(function (person) {
if (person.role === roles[0] || person.role === roles[1]) {
var admin_3 = new admin_1.Admin({
email: req.body.email,
password: req.body.password,
name: req.body.name,
lastName: req.body.lastName,
role: roles[2]
});
admin_3.save()
.then(function () {
var supporter = {
email: admin_3.email,
name: admin_3.name,
lastName: admin_3.lastName,
role: admin_3.role
};
response_1["default"](res, 'The manager is added successfully!', supporter);
})["catch"](function (err) {
if (err.name = 'MongoError' && err.code === 11000) {
logger_1.logger.warn("The save action on User Collection with document " + req.body.lastName + " has some errors: " + err);
var error = new myError_1["default"]('The user has registered already!', 400, 9, 'کاربر قبلا ثبت نام کرده است!', 'خطا رخ داد');
next(error);
}
else {
logger_1.logger.error("The save action on User Collection with document " + req.body.lastName + " has some errors: " + err);
var error = new myError_1["default"]('Error happened during the registration!', 500, 9, 'در فرآیند ثبت نام مشکلی پیش آمده است!', 'خطا رخ داد');
next(error);
}
});
}
else {
var error = new myError_1["default"]('You are not authorized to do this task!', 400, 1, 'شما مجاز به انجام چنین کاری نیستید!', 'خطا رخ داد');
next(error);
}
})["catch"](function (err) {
next(err);
});
}));
exports.adminRoutes.post('/editUserProfile', auth_1.isAdmin, validation_1.userValidationRules('body', '_id'), validation_1.userValidationRules('body', 'userIsActive'), validation_1.userValidationRules('body', 'userUserType'), validation_1.validate, tryCtach_1["default"](function (req, res, next) {
console.log(req.body);
var userId = req.body._id;
var adminId = req.session.adminId;
var body = {
isActive: req.body.userIsActive,
userType: req.body.userUserType
};
user_1.User.findOne({ _id: userId })
.then(function (user) {
if (user && user._id.toString() === userId) {
admin_1.Admin.findOne({ _id: adminId })
.then(function (person) { return __awaiter(void 0, void 0, void 0, function () {
var error;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!(person && person._id.toString() === adminId)) return [3 /*break*/, 2];
return [4 /*yield*/, Object.keys(body).map(function (element) {
if (body["" + element] || (element === 'isActive') && (body['isActive'] === true || body['isActive'] === false)) {
if (userEditableFields.includes(element)) {
if (element === 'userType' && body["" + element] === 'Vip') {
if (person.role === roles[0]) {
user["" + element] = body["" + element];
}
else {
var error = new myError_1["default"]('You are not authorized to do this task!', 400, 1, 'شما مجاز به انجام چنین کاری نیستید!', 'خطا رخ داد');
throw (error);
}
}
else {
if ([roles[0], roles[1]].includes(person.role)) {
user["" + element] = body["" + element];
}
else {
var error = new myError_1["default"]('You are not authorized to do this task!', 400, 1, 'شما مجاز به انجام چنین کاری نیستید!', 'خطا رخ داد');
throw (error);
}
}
}
else {
logger_1.logger.warn('Some fields are not existed or valid.');
var error = new myError_1["default"]('Some fields are not existed or valid.', 400, 1, 'برخی از فیلدهای درخواستی ناموجود یا نامعنبر است!', 'خطا رخ داد');
throw (error);
}
}
})];
case 1:
_a.sent();
user.save()
.then(function () {
var result = {
_id: user._id,
isActive: user.isActive,
userType: user.userType,
name: user.name,
lastName: user.lastName,
email: user.email,
phoneNumber: user.phoneNumber
};
response_1["default"](res, 'The user is changed successfully!', result);
})["catch"](function (err) {
var message = err.message ? err.message : err;
logger_1.logger.error(message);
next(err);
});
return [3 /*break*/, 3];
case 2:
logger_1.logger.warn('The admin does not exist!');
error = new myError_1["default"]('The admin does not exist!', 400, 1, 'چنین ادمینی در سامانه ثبت نشده است!', 'خطا رخ داد');
next(error);
_a.label = 3;
case 3: return [2 /*return*/];
}
});
}); })["catch"](function (err) {
next(err);
});
}
else {
logger_1.logger.warn('The user does not exist!');
var error = new myError_1["default"]('The user does not exist!', 400, 1, 'چنین کاربری در سامانه ثبت نشده است!', 'خطا رخ داد');
next(error);
}
})["catch"](function (err) {
next(err);
});
}));