2020-11-10 14:15:31 +01:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const _ = require('lodash');
|
|
|
|
|
|
|
|
const createUtils = strapi => {
|
|
|
|
const login = async userInfo => {
|
|
|
|
const sanitizedUserInfo = _.pick(userInfo, ['email', 'id']);
|
|
|
|
const user = await strapi.admin.services.user.findOne(sanitizedUserInfo);
|
|
|
|
if (!user) {
|
|
|
|
throw new Error('User not found');
|
|
|
|
}
|
|
|
|
const token = strapi.admin.services.token.createJwtToken(user);
|
|
|
|
|
|
|
|
return { token, user };
|
|
|
|
};
|
|
|
|
const registerOrLogin = async userCredentials => {
|
|
|
|
await createUserIfNotExists(userCredentials);
|
|
|
|
return login(userCredentials);
|
|
|
|
};
|
|
|
|
|
|
|
|
const findUser = strapi.admin.services.user.findOne;
|
|
|
|
const userExists = strapi.admin.services.user.exists;
|
|
|
|
const createUser = async userInfo => {
|
|
|
|
const superAdminRole = await strapi.admin.services.role.getSuperAdminWithUsersCount();
|
|
|
|
|
|
|
|
if (superAdminRole.usersCount === 0) {
|
2020-11-17 15:38:41 +01:00
|
|
|
const userRoles = _.uniq((userInfo.roles || []).concat(superAdminRole.id));
|
|
|
|
Object.assign(userInfo, { roles: userRoles });
|
2020-11-10 14:15:31 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return strapi.admin.services.user.create({
|
|
|
|
registrationToken: null,
|
|
|
|
isActive: true,
|
|
|
|
...userInfo,
|
|
|
|
});
|
|
|
|
};
|
|
|
|
const deleteUserById = strapi.admin.services.user.deleteById;
|
|
|
|
const deleteUsersById = strapi.admin.services.user.deleteByIds;
|
|
|
|
const createUserIfNotExists = async userInfo => {
|
|
|
|
const sanitizedUserInfo = _.pick(userInfo, ['email', 'id']);
|
|
|
|
const exists = await userExists(sanitizedUserInfo);
|
|
|
|
|
|
|
|
return !exists ? createUser(userInfo) : null;
|
|
|
|
};
|
|
|
|
|
|
|
|
const createRole = strapi.admin.services.role.create;
|
|
|
|
const getRole = strapi.admin.services.role.find;
|
|
|
|
const deleteRolesById = strapi.admin.services.role.deleteByIds;
|
|
|
|
const getSuperAdminRole = strapi.admin.services.role.getSuperAdmin;
|
2020-11-17 15:38:41 +01:00
|
|
|
const assignPermissionsToRole = strapi.admin.services.role.assignPermissions;
|
2020-11-10 14:15:31 +01:00
|
|
|
|
|
|
|
return {
|
|
|
|
// Auth
|
|
|
|
login,
|
|
|
|
registerOrLogin,
|
|
|
|
// Users
|
|
|
|
findUser,
|
|
|
|
createUser,
|
|
|
|
createUserIfNotExists,
|
|
|
|
userExists,
|
|
|
|
deleteUserById,
|
|
|
|
deleteUsersById,
|
|
|
|
// Roles
|
|
|
|
getRole,
|
|
|
|
getSuperAdminRole,
|
|
|
|
createRole,
|
|
|
|
deleteRolesById,
|
2020-11-17 15:38:41 +01:00
|
|
|
assignPermissionsToRole,
|
|
|
|
};
|
2020-11-10 14:15:31 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = { createUtils };
|