2017-11-06 11:14:43 +01:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* UsersPermissions.js controller
|
|
|
|
*
|
|
|
|
* @description: A set of functions called "actions" of the `users-permissions` plugin.
|
|
|
|
*/
|
|
|
|
|
2017-11-15 15:06:09 +01:00
|
|
|
const _ = require('lodash');
|
|
|
|
|
2017-11-06 11:14:43 +01:00
|
|
|
module.exports = {
|
|
|
|
/**
|
|
|
|
* Default action.
|
|
|
|
*
|
|
|
|
* @return {Object}
|
|
|
|
*/
|
2019-04-09 12:09:03 +02:00
|
|
|
createRole: async ctx => {
|
2017-11-23 11:03:26 +01:00
|
|
|
if (_.isEmpty(ctx.request.body)) {
|
|
|
|
return ctx.badRequest(null, [{ messages: [{ id: 'Cannot be empty' }] }]);
|
|
|
|
}
|
2017-11-23 17:13:46 +01:00
|
|
|
|
2017-11-23 11:03:26 +01:00
|
|
|
try {
|
2019-04-09 12:09:03 +02:00
|
|
|
await strapi.plugins[
|
|
|
|
'users-permissions'
|
|
|
|
].services.userspermissions.createRole(ctx.request.body);
|
2018-01-23 15:38:43 +01:00
|
|
|
|
2017-11-23 11:03:26 +01:00
|
|
|
ctx.send({ ok: true });
|
2019-04-09 12:09:03 +02:00
|
|
|
} catch (err) {
|
2017-11-23 11:03:26 +01:00
|
|
|
ctx.badRequest(null, [{ messages: [{ id: 'An error occured' }] }]);
|
|
|
|
}
|
|
|
|
},
|
2017-11-06 11:14:43 +01:00
|
|
|
|
2017-11-23 18:08:14 +01:00
|
|
|
deleteProvider: async ctx => {
|
|
|
|
const { provider } = ctx.params;
|
|
|
|
|
|
|
|
if (!provider) {
|
|
|
|
return ctx.badRequest(null, [{ messages: [{ id: 'Bad request' }] }]);
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO handle dynamic
|
2018-01-23 15:38:43 +01:00
|
|
|
ctx.send({ ok: true });
|
2017-11-23 18:08:14 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
deleteRole: async ctx => {
|
2019-04-09 12:09:03 +02:00
|
|
|
// Fetch public role.
|
|
|
|
const publicRole = await strapi
|
|
|
|
.query('role', 'users-permissions')
|
|
|
|
.findOne({ type: 'public' });
|
2018-01-23 15:38:43 +01:00
|
|
|
|
2018-03-12 16:37:20 +01:00
|
|
|
const publicRoleID = publicRole.id || publicRole._id;
|
2017-11-23 18:08:14 +01:00
|
|
|
|
2018-01-23 15:38:43 +01:00
|
|
|
const roleID = ctx.params.role;
|
|
|
|
|
|
|
|
if (!roleID) {
|
2017-11-23 18:08:14 +01:00
|
|
|
return ctx.badRequest(null, [{ messages: [{ id: 'Bad request' }] }]);
|
|
|
|
}
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
// Prevent from removing the public role.
|
|
|
|
if (roleID.toString() === publicRoleID.toString()) {
|
2017-11-27 17:02:45 +01:00
|
|
|
return ctx.badRequest(null, [{ messages: [{ id: 'Unauthorized' }] }]);
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
2019-04-09 12:09:03 +02:00
|
|
|
await strapi.plugins[
|
|
|
|
'users-permissions'
|
|
|
|
].services.userspermissions.deleteRole(roleID, publicRoleID);
|
2018-01-23 15:38:43 +01:00
|
|
|
|
|
|
|
ctx.send({ ok: true });
|
2019-04-09 12:09:03 +02:00
|
|
|
} catch (err) {
|
2018-01-23 15:38:43 +01:00
|
|
|
ctx.badRequest(null, [{ messages: [{ id: 'Bad request' }] }]);
|
2017-11-27 17:02:45 +01:00
|
|
|
}
|
2017-11-23 18:08:14 +01:00
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
getPermissions: async ctx => {
|
2017-11-15 15:11:10 +01:00
|
|
|
try {
|
2018-01-05 16:19:53 +01:00
|
|
|
const { lang } = ctx.query;
|
2019-04-09 12:09:03 +02:00
|
|
|
const plugins = await strapi.plugins[
|
|
|
|
'users-permissions'
|
|
|
|
].services.userspermissions.getPlugins(lang);
|
|
|
|
const permissions = await strapi.plugins[
|
|
|
|
'users-permissions'
|
|
|
|
].services.userspermissions.getActions(plugins);
|
2018-01-23 15:38:43 +01:00
|
|
|
|
2017-11-16 17:59:41 +01:00
|
|
|
ctx.send({ permissions });
|
2019-04-09 12:09:03 +02:00
|
|
|
} catch (err) {
|
2017-11-15 15:11:10 +01:00
|
|
|
ctx.badRequest(null, [{ message: [{ id: 'Not Found' }] }]);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
getPolicies: async ctx => {
|
2018-01-23 15:38:43 +01:00
|
|
|
ctx.send({
|
2019-04-09 12:09:03 +02:00
|
|
|
policies: _.without(
|
|
|
|
_.keys(strapi.plugins['users-permissions'].config.policies),
|
|
|
|
'permissions',
|
|
|
|
),
|
2017-11-29 18:45:51 +01:00
|
|
|
});
|
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
getRole: async ctx => {
|
2017-11-15 14:00:51 +01:00
|
|
|
const { id } = ctx.params;
|
2018-01-05 16:19:53 +01:00
|
|
|
const { lang } = ctx.query;
|
2019-04-09 12:09:03 +02:00
|
|
|
const plugins = await strapi.plugins[
|
|
|
|
'users-permissions'
|
|
|
|
].services.userspermissions.getPlugins(lang);
|
|
|
|
const role = await strapi.plugins[
|
|
|
|
'users-permissions'
|
|
|
|
].services.userspermissions.getRole(id, plugins);
|
2017-11-15 15:11:10 +01:00
|
|
|
|
|
|
|
if (_.isEmpty(role)) {
|
2017-11-20 14:35:24 +01:00
|
|
|
return ctx.badRequest(null, [{ messages: [{ id: `Role don't exist` }] }]);
|
2017-11-15 15:11:10 +01:00
|
|
|
}
|
2017-11-15 14:00:51 +01:00
|
|
|
|
2018-01-23 15:38:43 +01:00
|
|
|
ctx.send({ role });
|
2017-11-15 14:00:51 +01:00
|
|
|
},
|
2017-11-06 11:14:43 +01:00
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
getRoles: async ctx => {
|
2017-11-27 16:04:57 +01:00
|
|
|
try {
|
2019-04-09 12:09:03 +02:00
|
|
|
const roles = await strapi.plugins[
|
|
|
|
'users-permissions'
|
|
|
|
].services.userspermissions.getRoles();
|
2017-11-27 16:04:57 +01:00
|
|
|
|
|
|
|
ctx.send({ roles });
|
2019-04-09 12:09:03 +02:00
|
|
|
} catch (err) {
|
2017-11-27 16:04:57 +01:00
|
|
|
ctx.badRequest(null, [{ messages: [{ id: 'Not found' }] }]);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
getRoutes: async ctx => {
|
2017-11-30 16:34:43 +01:00
|
|
|
try {
|
2019-04-09 12:09:03 +02:00
|
|
|
const routes = await strapi.plugins[
|
|
|
|
'users-permissions'
|
|
|
|
].services.userspermissions.getRoutes();
|
2017-11-30 16:34:43 +01:00
|
|
|
|
|
|
|
ctx.send({ routes });
|
2019-04-09 12:09:03 +02:00
|
|
|
} catch (err) {
|
2017-11-30 16:34:43 +01:00
|
|
|
ctx.badRequest(null, [{ messages: [{ id: 'Not found' }] }]);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
index: async ctx => {
|
2017-11-06 11:14:43 +01:00
|
|
|
// Add your own logic here.
|
|
|
|
|
|
|
|
// Send 200 `ok`
|
|
|
|
ctx.send({
|
2019-04-09 12:09:03 +02:00
|
|
|
message: 'ok',
|
2017-11-06 11:14:43 +01:00
|
|
|
});
|
2017-11-14 17:09:13 +01:00
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
init: async ctx => {
|
|
|
|
const admins = await strapi.query('administrator', 'admin').find();
|
2017-11-29 15:42:11 +01:00
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
ctx.send({ hasAdmin: admins.length > 0 });
|
2017-11-23 17:13:46 +01:00
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
searchUsers: async ctx => {
|
|
|
|
const data = await strapi
|
|
|
|
.query('user', 'users-permissions')
|
|
|
|
.search(ctx.params);
|
2018-01-23 15:38:43 +01:00
|
|
|
|
|
|
|
ctx.send(data);
|
2017-11-27 12:19:36 +01:00
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
updateRole: async function(ctx) {
|
2018-01-22 18:19:44 +01:00
|
|
|
const roleID = ctx.params.role;
|
2017-11-27 17:50:51 +01:00
|
|
|
|
|
|
|
if (_.isEmpty(ctx.request.body)) {
|
|
|
|
return ctx.badRequest(null, [{ messages: [{ id: 'Bad request' }] }]);
|
|
|
|
}
|
|
|
|
|
2017-11-23 17:13:46 +01:00
|
|
|
try {
|
2019-04-09 12:09:03 +02:00
|
|
|
await strapi.plugins[
|
|
|
|
'users-permissions'
|
|
|
|
].services.userspermissions.updateRole(roleID, ctx.request.body);
|
|
|
|
|
2019-01-23 15:33:30 +01:00
|
|
|
strapi.emit('didOpenAccessToFetchContentTypeEntries', ctx.request.body);
|
2018-01-22 18:19:44 +01:00
|
|
|
|
2017-11-23 17:13:46 +01:00
|
|
|
ctx.send({ ok: true });
|
2019-01-23 15:33:30 +01:00
|
|
|
} catch (error) {
|
2017-11-23 17:13:46 +01:00
|
|
|
ctx.badRequest(null, [{ messages: [{ id: 'An error occurred' }] }]);
|
|
|
|
}
|
2018-01-15 11:59:10 +01:00
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
getEmailTemplate: async ctx => {
|
|
|
|
ctx.send(
|
|
|
|
await strapi
|
|
|
|
.store({
|
|
|
|
environment: '',
|
|
|
|
type: 'plugin',
|
|
|
|
name: 'users-permissions',
|
|
|
|
key: 'email',
|
|
|
|
})
|
|
|
|
.get(),
|
|
|
|
);
|
2018-01-15 12:05:01 +01:00
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
updateEmailTemplate: async ctx => {
|
2018-01-15 12:05:01 +01:00
|
|
|
if (_.isEmpty(ctx.request.body)) {
|
|
|
|
return ctx.badRequest(null, [{ messages: [{ id: 'Cannot be empty' }] }]);
|
|
|
|
}
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
await strapi
|
|
|
|
.store({
|
|
|
|
environment: '',
|
|
|
|
type: 'plugin',
|
|
|
|
name: 'users-permissions',
|
|
|
|
key: 'email',
|
|
|
|
})
|
|
|
|
.set({ value: ctx.request.body['email-templates'] });
|
2018-01-15 12:05:01 +01:00
|
|
|
|
2018-01-18 16:23:31 +01:00
|
|
|
ctx.send({ ok: true });
|
2018-01-15 16:23:54 +01:00
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
getAdvancedSettings: async ctx => {
|
2018-03-12 15:56:25 +01:00
|
|
|
ctx.send({
|
2019-04-09 12:09:03 +02:00
|
|
|
settings: await strapi
|
|
|
|
.store({
|
|
|
|
environment: '',
|
|
|
|
type: 'plugin',
|
|
|
|
name: 'users-permissions',
|
|
|
|
key: 'advanced',
|
|
|
|
})
|
|
|
|
.get(),
|
|
|
|
roles: await strapi.plugins[
|
|
|
|
'users-permissions'
|
|
|
|
].services.userspermissions.getRoles(),
|
2018-03-12 15:56:25 +01:00
|
|
|
});
|
2018-01-15 16:23:54 +01:00
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
updateAdvancedSettings: async ctx => {
|
2018-01-15 16:23:54 +01:00
|
|
|
if (_.isEmpty(ctx.request.body)) {
|
|
|
|
return ctx.badRequest(null, [{ messages: [{ id: 'Cannot be empty' }] }]);
|
|
|
|
}
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
await strapi
|
|
|
|
.store({
|
|
|
|
environment: '',
|
|
|
|
type: 'plugin',
|
|
|
|
name: 'users-permissions',
|
|
|
|
key: 'advanced',
|
|
|
|
})
|
|
|
|
.set({ value: ctx.request.body });
|
2018-01-15 16:23:54 +01:00
|
|
|
|
2018-01-18 16:23:31 +01:00
|
|
|
ctx.send({ ok: true });
|
2018-01-19 15:14:51 +01:00
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
getProviders: async ctx => {
|
|
|
|
ctx.send(
|
|
|
|
await strapi
|
|
|
|
.store({
|
|
|
|
environment: '',
|
|
|
|
type: 'plugin',
|
|
|
|
name: 'users-permissions',
|
|
|
|
key: 'grant',
|
|
|
|
})
|
|
|
|
.get(),
|
|
|
|
);
|
2018-01-22 10:23:04 +01:00
|
|
|
},
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
updateProviders: async ctx => {
|
2018-01-22 10:23:04 +01:00
|
|
|
if (_.isEmpty(ctx.request.body)) {
|
|
|
|
return ctx.badRequest(null, [{ messages: [{ id: 'Cannot be empty' }] }]);
|
|
|
|
}
|
|
|
|
|
2019-04-09 12:09:03 +02:00
|
|
|
await strapi
|
|
|
|
.store({
|
|
|
|
environment: '',
|
|
|
|
type: 'plugin',
|
|
|
|
name: 'users-permissions',
|
|
|
|
key: 'grant',
|
|
|
|
})
|
|
|
|
.set({ value: ctx.request.body.providers });
|
2018-01-22 10:23:04 +01:00
|
|
|
|
|
|
|
ctx.send({ ok: true });
|
2019-04-09 12:09:03 +02:00
|
|
|
},
|
2017-11-06 11:14:43 +01:00
|
|
|
};
|