mirror of
https://github.com/strapi/strapi.git
synced 2025-08-07 00:09:23 +00:00
37 lines
1023 B
JavaScript
37 lines
1023 B
JavaScript
'use strict';
|
|
|
|
const { pick } = require('lodash/fp');
|
|
const { validateUserCreationInput } = require('../validation/user');
|
|
|
|
const pickUserCreationAttributes = pick(['firstname', 'lastname', 'email', 'roles']);
|
|
|
|
module.exports = {
|
|
async create(ctx) {
|
|
const { body } = ctx.request;
|
|
|
|
try {
|
|
await validateUserCreationInput(body);
|
|
} catch (err) {
|
|
return ctx.badRequest('ValidationError', err);
|
|
}
|
|
|
|
const attributes = pickUserCreationAttributes(body);
|
|
const { useSSORegistration } = body;
|
|
|
|
const userAlreadyExists = await strapi.admin.services.user.exists({ email: attributes.email });
|
|
|
|
if (userAlreadyExists) {
|
|
return ctx.badRequest('Email already taken');
|
|
}
|
|
|
|
if (useSSORegistration) {
|
|
Object.assign(attributes, { registrationToken: null, isActive: true });
|
|
}
|
|
|
|
const createdUser = await strapi.admin.services.user.create(attributes);
|
|
const userInfo = strapi.admin.services.user.sanitizeUser(createdUser);
|
|
|
|
ctx.created({ data: userInfo });
|
|
},
|
|
};
|