You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
upload-file-backend/src/api/controllers/v1/user.controller.js

199 lines
4.7 KiB

2 years ago
import { hash } from 'bcryptjs';
2 years ago
import { pick } from 'lodash';
// import httpStatus from 'http-status';
import messages from '../../../config/messages';
2 years ago
// import { hash, compare } from 'bcryptjs';
2 years ago
import { handler as ErrorHandler } from '../../middlewares/error';
import User from '../../../common/models/user.model';
import uploadAdapter from '../../../common/services/adapters/upload-adapter';
/**
* Create
*
* @public
* @param {StorySchema} body
* @returns {Promise<StorySchema>, APIException>}
*/
exports.create = async (req, res, next) => {
// transform data
req.body.created_by = pick(req.user, ['id', 'name']);
const params = req.body;
params.type = User.Types.INDIVIDUAL;
params.service = User.Services.INDIVIDUAL;
// save data
await User.create(req.body)
.then(data => {
uploadAdapter.createDefaultFolder({ id: data.id });
res.json({
code: 0,
message: messages.CREATE_SUCCESS,
data: User.transform(data)
});
}).catch(ex => {
ErrorHandler(ex, req, res, next);
});
};
/**
* List
*
* @public
* @param {StorySchema} query
* @returns {Promise<StorySchema[]>, APIException>}
*/
exports.list = async (req, res, next) => {
2 years ago
req.query.services = User.Services.USER
2 years ago
User.list(
req.query
).then(result => {
res.json({
code: 0,
count: req.totalRecords,
data: result.map(
x => User.transform(x)
)
});
}).catch(ex => {
ErrorHandler(ex, req, res, next);
});
};
/**
* Detail
*
* @public
* @param {params} userId,
* @returns {Promise<StorySchema>, APIException>}
*/
exports.get = async (req, res, next) => res.json({ data: User.transform(req.locals.user) });
/**
* Update
*
* @public
* @param {params} userId
* @returns {Promise<any>, APIException>}
*/
exports.update = async (req, res, next) => {
const { user } = req.locals;
2 years ago
const dataChanged = User.getChangedProperties(req.body);
2 years ago
const new_properties = pick(req.body, dataChanged);
2 years ago
// const updateUser = Object.assign(
// user,
// pick(req.body, dataChanged)
// );
// const currentUser = await User.get(user.id)
// console.log(dataChanged);
2 years ago
return User.update(
2 years ago
new_properties,
2 years ago
{
where: {
id: user.id
}
}
).then(() => {
res.json({
code: 0,
2 years ago
message: messages.UPDATE_SUCCESS,
// dataChanged: dataChanged
2 years ago
});
}).catch(ex => {
ErrorHandler(ex, req, res, next);
});
};
/**
* delete
*
* @public
* @param {params} userId
* @returns {Promise<any>, APIException>}
*/
exports.delete = async (req, res, next) => {
const { user } = req.locals;
2 years ago
// const new_user = Object.assign(
// user,
// isactive : false
// )
2 years ago
return User.update(
2 years ago
{ is_active: false},
2 years ago
{
where: {
id: user.id
}
}
2 years ago
).then( () => {
2 years ago
res.json({
code: 0,
message: messages.REMOVE_SUCCESS
});
}).catch(ex => {
ErrorHandler(ex, req, res, next);
});
};
exports.getStaffPermission = async (req, res, next) => {
const { story } = req.locals;
return res.json({
code: 0,
data: story
});
};
2 years ago
// exports.addRole = async(req,res,next) => {
// const {user} = req.locals;
// const admin = ['administrator'];
// // const user.permissions[0] = admin;
// return User.update({
// permissions: admin,
// service: 'administrator'
// },
// {
// where : {id : user.id}
// }
// ).then( async () => {
// const new_user = await User.get(req.params.id);
// console.log(new_user);
// res.json(
// {
// code: 0,
// messages: messages.CREATE_SUCCESS
// }
// );
// }).catch( ex => {
// ErrorHandler(ex, req, res, next);
// })
// }
exports.updatePassword = async(req,res,next) => {
const {new_password} = req.body;
const {user} = req.locals;
// console.log(user);
if (user) {
const rounds = 10;
const new_pass = await hash(new_password, rounds);
return User.update(
{password: new_pass},
{
where: {
id: user.id
}
},
).then( async () => {
res.json({
code: 0,
message: messages.UPDATE_SUCCESS
});
}).catch(ex => {
ErrorHandler(ex, req, res, next);
});
};
};