2020-05-13 12:27:46 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const _ = require('lodash');
|
2020-05-27 16:06:15 +02:00
|
|
|
const { validateUserCreationInput, validateUserUpdateInput } = require('../validation/user');
|
2020-05-13 12:27:46 +02:00
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
async create(ctx) {
|
|
|
|
const { body } = ctx.request;
|
|
|
|
|
2020-05-14 11:57:43 +02:00
|
|
|
try {
|
|
|
|
await validateUserCreationInput(body);
|
|
|
|
} catch (err) {
|
2020-05-15 09:34:49 +02:00
|
|
|
return ctx.badRequest('ValidationError', err);
|
2020-05-13 12:27:46 +02:00
|
|
|
}
|
|
|
|
|
2020-05-14 11:57:43 +02:00
|
|
|
const attributes = _.pick(body, ['firstname', 'lastname', 'email', 'roles']);
|
2020-05-13 12:27:46 +02:00
|
|
|
|
|
|
|
const userAlreadyExists = await strapi.admin.services.user.exists({
|
2020-05-14 11:57:43 +02:00
|
|
|
email: attributes.email,
|
2020-05-13 12:27:46 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
if (userAlreadyExists) {
|
2020-05-14 18:54:52 +02:00
|
|
|
return ctx.badRequest('Email already taken');
|
2020-05-13 12:27:46 +02:00
|
|
|
}
|
|
|
|
|
2020-05-14 18:54:52 +02:00
|
|
|
const createdUser = await strapi.admin.services.user.create(attributes);
|
2020-05-13 12:27:46 +02:00
|
|
|
|
2020-05-18 16:07:37 +02:00
|
|
|
const userInfo = strapi.admin.services.user.sanitizeUser(createdUser);
|
|
|
|
|
2020-05-13 12:27:46 +02:00
|
|
|
// Send 201 created
|
2020-05-18 16:07:37 +02:00
|
|
|
ctx.created({ data: userInfo });
|
2020-05-13 12:27:46 +02:00
|
|
|
},
|
2020-05-19 10:55:52 +02:00
|
|
|
|
|
|
|
async find(ctx) {
|
2020-05-19 16:10:53 +02:00
|
|
|
const method = _.has(ctx.query, '_q') ? 'searchPage' : 'findPage';
|
|
|
|
|
|
|
|
const { results, pagination } = await strapi.admin.services.user[method](ctx.query);
|
2020-05-19 11:06:07 +02:00
|
|
|
|
|
|
|
return {
|
2020-05-19 16:10:53 +02:00
|
|
|
data: {
|
|
|
|
results: results.map(strapi.admin.services.user.sanitizeUser),
|
|
|
|
pagination,
|
|
|
|
},
|
2020-05-19 11:06:07 +02:00
|
|
|
};
|
2020-05-19 10:55:52 +02:00
|
|
|
},
|
2020-05-27 16:06:15 +02:00
|
|
|
|
|
|
|
async update(ctx) {
|
|
|
|
const { id } = ctx.params;
|
|
|
|
const { body: input } = ctx.request;
|
|
|
|
|
|
|
|
try {
|
|
|
|
await validateUserUpdateInput(input);
|
|
|
|
} catch (err) {
|
|
|
|
return ctx.badRequest('ValidationError', err);
|
|
|
|
}
|
|
|
|
|
|
|
|
const userExists = await strapi.admin.services.user.exists({ id });
|
|
|
|
|
|
|
|
if (!userExists) {
|
|
|
|
return ctx.badRequest('User does not exists');
|
|
|
|
}
|
|
|
|
|
|
|
|
const updatedUser = await strapi.admin.services.user.update({ id }, input);
|
|
|
|
|
|
|
|
ctx.body = {
|
|
|
|
data: strapi.admin.services.user.sanitizeUser(updatedUser),
|
|
|
|
};
|
|
|
|
},
|
2020-05-13 12:27:46 +02:00
|
|
|
};
|