mirror of
https://github.com/strapi/strapi.git
synced 2025-08-23 16:19:37 +00:00
Add users count by role
This commit is contained in:
parent
a7b56b484f
commit
0655833da9
@ -82,5 +82,17 @@ module.exports = {
|
|||||||
.orWhere('email', 'LIKE', `%${params.id}%`);
|
.orWhere('email', 'LIKE', `%${params.id}%`);
|
||||||
})
|
})
|
||||||
.fetchAll();
|
.fetchAll();
|
||||||
|
},
|
||||||
|
|
||||||
|
countByRoles: async function () {
|
||||||
|
const result = await strapi.connections[this.connection].raw('SELECT COUNT("id") AS total, "role" FROM "user" GROUP BY "role";');
|
||||||
|
return result.rows.reduce((acc, current) => {
|
||||||
|
acc.push({
|
||||||
|
_id: parseFloat(current.role),
|
||||||
|
total: parseFloat(current.total)
|
||||||
|
});
|
||||||
|
|
||||||
|
return acc;
|
||||||
|
}, []);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -57,5 +57,16 @@ module.exports = {
|
|||||||
{ email: re }
|
{ email: re }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
countByRoles: async function () {
|
||||||
|
return this.aggregate([
|
||||||
|
{
|
||||||
|
$group: {
|
||||||
|
_id: "$role",
|
||||||
|
total: {$sum: 1}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -2,11 +2,569 @@
|
|||||||
"0": {
|
"0": {
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "Administrator",
|
"name": "Administrator",
|
||||||
"permissions": {}
|
"permissions": {
|
||||||
|
"content-manager": {
|
||||||
|
"controllers": {
|
||||||
|
"contentmanager": {
|
||||||
|
"models": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"find": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"count": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"findOne": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"create": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"content-type-builder": {
|
||||||
|
"controllers": {
|
||||||
|
"contenttypebuilder": {
|
||||||
|
"getModels": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"getModel": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"getConnections": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"createModel": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"updateModel": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"deleteModel": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"autoReload": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"checkTableExists": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"settings-manager": {
|
||||||
|
"controllers": {
|
||||||
|
"settingsmanager": {
|
||||||
|
"menu": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"environments": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"languages": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"databases": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"database": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"databaseModel": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"get": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"createLanguage": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"deleteLanguage": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"createDatabase": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"updateDatabase": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"deleteDatabase": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"autoReload": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"users-permissions": {
|
||||||
|
"controllers": {
|
||||||
|
"auth": {
|
||||||
|
"callback": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"register": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"forgotPassword": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"changePassword": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"find": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"findOne": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"create": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"destroy": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"userspermissions": {
|
||||||
|
"createRole": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"deleteProvider": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"deleteRole": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"getPermissions": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"getPolicies": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"getRole": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"getRoles": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"index": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"searchUsers": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"updateRole": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"application": {
|
||||||
|
"controllers": {
|
||||||
|
"article": {
|
||||||
|
"find": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"findOne": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"create": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"destroy": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"1": {
|
"1": {
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "Guest",
|
"name": "Guest",
|
||||||
"permissions": {}
|
"permissions": {
|
||||||
|
"content-manager": {
|
||||||
|
"controllers": {
|
||||||
|
"contentmanager": {
|
||||||
|
"models": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"find": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"count": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"findOne": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"create": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"content-type-builder": {
|
||||||
|
"controllers": {
|
||||||
|
"contenttypebuilder": {
|
||||||
|
"getModels": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"getModel": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"getConnections": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"createModel": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"updateModel": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"deleteModel": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"autoReload": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"checkTableExists": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"settings-manager": {
|
||||||
|
"controllers": {
|
||||||
|
"settingsmanager": {
|
||||||
|
"menu": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"environments": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"languages": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"databases": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"database": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"databaseModel": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"get": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"createLanguage": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"deleteLanguage": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"createDatabase": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"updateDatabase": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"deleteDatabase": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"autoReload": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"users-permissions": {
|
||||||
|
"controllers": {
|
||||||
|
"auth": {
|
||||||
|
"callback": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"register": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"forgotPassword": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"changePassword": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"find": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"findOne": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"create": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"destroy": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"userspermissions": {
|
||||||
|
"createRole": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"deleteProvider": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"deleteRole": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"getPermissions": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"getPolicies": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"getRole": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"getRoles": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"index": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"enabled": true,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"searchUsers": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"updateRole": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"application": {
|
||||||
|
"controllers": {
|
||||||
|
"article": {
|
||||||
|
"find": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"findOne": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"create": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"destroy": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"enabled": false,
|
||||||
|
"policy": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -78,15 +78,15 @@ module.exports = {
|
|||||||
return _.pick(appRoles, [roleId]);
|
return _.pick(appRoles, [roleId]);
|
||||||
},
|
},
|
||||||
|
|
||||||
getRoles: () => {
|
getRoles: async () => {
|
||||||
const Service = strapi.plugins['users-permissions'].services.userspermissions;
|
const Service = strapi.plugins['users-permissions'].services.userspermissions;
|
||||||
const roles = require(Service.getRoleConfigPath());
|
const roles = require(Service.getRoleConfigPath());
|
||||||
|
const usersCount = await strapi.query('user', 'users-permissions').countByRoles();
|
||||||
const formattedRoles = Object.keys(roles).reduce((acc, key) => {
|
const formattedRoles = Object.keys(roles).reduce((acc, key) => {
|
||||||
const role = _.pick(roles[key], ['name', 'description']);
|
const role = _.pick(roles[key], ['name', 'description']);
|
||||||
|
|
||||||
_.set(role, 'id', key);
|
_.set(role, 'id', key);
|
||||||
// TODO get number_users
|
_.set(role, 'nb_users', _.get(_.find(usersCount, { _id: parseFloat(key) }), 'total'));
|
||||||
_.set(role, 'nb_users', 0);
|
|
||||||
acc.push(role);
|
acc.push(role);
|
||||||
|
|
||||||
return acc;
|
return acc;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user