2020-05-13 11:46:52 +02:00
|
|
|
'use strict';
|
|
|
|
|
2020-05-18 16:07:37 +02:00
|
|
|
const _ = require('lodash');
|
2020-05-14 10:37:32 +02:00
|
|
|
const { createUser } = require('../domain/user');
|
|
|
|
|
2020-05-18 16:07:37 +02:00
|
|
|
/**
|
|
|
|
* Remove private user fields
|
|
|
|
* @param {Object} user - user to sanitize
|
|
|
|
*/
|
|
|
|
const sanitizeUser = user => {
|
|
|
|
return _.omit(user, ['password', 'resetPasswordToken']);
|
|
|
|
};
|
|
|
|
|
2020-05-14 10:37:32 +02:00
|
|
|
/**
|
|
|
|
* Create and save a user in database
|
|
|
|
* @param attributes A partial user object
|
|
|
|
* @returns {Promise<user>}
|
|
|
|
*/
|
2020-05-14 11:06:16 +02:00
|
|
|
const create = async attributes => {
|
2020-05-14 18:54:52 +02:00
|
|
|
const user = createUser({
|
|
|
|
registrationToken: strapi.admin.services.token.createToken(),
|
|
|
|
...attributes,
|
|
|
|
});
|
|
|
|
|
2020-05-14 10:37:32 +02:00
|
|
|
return strapi.query('user', 'admin').create(user);
|
2020-05-14 11:06:16 +02:00
|
|
|
};
|
2020-05-13 11:46:52 +02:00
|
|
|
|
2020-05-14 10:37:32 +02:00
|
|
|
/**
|
|
|
|
* Check if a user with specific attributes exists in the database
|
|
|
|
* @param attributes A partial user object
|
|
|
|
* @returns {Promise<boolean>}
|
|
|
|
*/
|
2020-05-14 11:06:16 +02:00
|
|
|
const exists = async attributes => {
|
2020-05-14 10:37:32 +02:00
|
|
|
return (await strapi.query('user', 'admin').count(attributes)) > 0;
|
2020-05-14 11:06:16 +02:00
|
|
|
};
|
2020-05-13 11:46:52 +02:00
|
|
|
|
2020-05-18 16:07:37 +02:00
|
|
|
/**
|
|
|
|
* Returns a user registration info
|
|
|
|
* @param {string} registrationToken - a user registration token
|
|
|
|
* @returns {Promise<registrationInfo>} - Returns user email, firstname and lastname
|
|
|
|
*/
|
|
|
|
const findRegistrationInfo = async registrationToken => {
|
|
|
|
const user = await strapi.query('user', 'admin').findOne({ registrationToken });
|
|
|
|
|
|
|
|
if (!user) {
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
|
|
|
|
return _.pick(user, ['email', 'firstname', 'lastname']);
|
|
|
|
};
|
|
|
|
|
2020-05-14 10:37:32 +02:00
|
|
|
module.exports = {
|
2020-05-18 16:07:37 +02:00
|
|
|
sanitizeUser,
|
2020-05-14 10:37:32 +02:00
|
|
|
create,
|
|
|
|
exists,
|
2020-05-18 16:07:37 +02:00
|
|
|
findRegistrationInfo,
|
2020-05-13 11:46:52 +02:00
|
|
|
};
|