mirror of
https://github.com/strapi/strapi.git
synced 2025-11-03 11:25:17 +00:00
Init user models and fix api prefix
This commit is contained in:
parent
bc685a7d3a
commit
4ad44f016b
@ -7,6 +7,51 @@
|
||||
"config": {
|
||||
"policies": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/user",
|
||||
"handler": "User.find",
|
||||
"config": {
|
||||
"policies": [],
|
||||
"prefix": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/user/:_id",
|
||||
"handler": "User.findOne",
|
||||
"config": {
|
||||
"policies": [],
|
||||
"prefix": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/user",
|
||||
"handler": "User.create",
|
||||
"config": {
|
||||
"policies": [],
|
||||
"prefix": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"method": "PUT",
|
||||
"path": "/user/:_id",
|
||||
"handler": "User.update",
|
||||
"config": {
|
||||
"policies": [],
|
||||
"prefix": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/user/:_id",
|
||||
"handler": "User.destroy",
|
||||
"config": {
|
||||
"policies": [],
|
||||
"prefix": ""
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
75
packages/strapi-plugin-users-permissions/controllers/User.js
Normal file
75
packages/strapi-plugin-users-permissions/controllers/User.js
Normal file
@ -0,0 +1,75 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* User.js controller
|
||||
*
|
||||
* @description: A set of functions called "actions" for managing `User`.
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
|
||||
/**
|
||||
* Retrieve user records.
|
||||
*
|
||||
* @return {Object|Array}
|
||||
*/
|
||||
|
||||
find: async (ctx) => {
|
||||
const data = await strapi.plugins['users-permissions'].services.user.fetchAll(ctx.query);
|
||||
|
||||
// Send 200 `ok`
|
||||
ctx.send(data);
|
||||
},
|
||||
|
||||
/**
|
||||
* Retrieve a user record.
|
||||
*
|
||||
* @return {Object}
|
||||
*/
|
||||
|
||||
findOne: async (ctx) => {
|
||||
const data = await strapi.plugins['users-permissions'].services.user.fetch(ctx.params);
|
||||
|
||||
// Send 200 `ok`
|
||||
ctx.send(data);
|
||||
},
|
||||
|
||||
/**
|
||||
* Create a/an user record.
|
||||
*
|
||||
* @return {Object}
|
||||
*/
|
||||
|
||||
create: async (ctx) => {
|
||||
const data = await strapi.plugins['users-permissions'].services.user.add(ctx.request.body);
|
||||
|
||||
// Send 201 `created`
|
||||
ctx.created(data);
|
||||
},
|
||||
|
||||
/**
|
||||
* Update a/an user record.
|
||||
*
|
||||
* @return {Object}
|
||||
*/
|
||||
|
||||
update: async (ctx, next) => {
|
||||
const data = await strapi.plugins['users-permissions'].services.user.edit(ctx.params, ctx.request.body) ;
|
||||
|
||||
// Send 200 `ok`
|
||||
ctx.send(data);
|
||||
},
|
||||
|
||||
/**
|
||||
* Destroy a/an user record.
|
||||
*
|
||||
* @return {Object}
|
||||
*/
|
||||
|
||||
destroy: async (ctx, next) => {
|
||||
const data = await strapi.plugins['users-permissions'].services.user.remove(ctx.params);
|
||||
|
||||
// Send 200 `ok`
|
||||
ctx.send(data);
|
||||
}
|
||||
};
|
||||
85
packages/strapi-plugin-users-permissions/models/User.js
Normal file
85
packages/strapi-plugin-users-permissions/models/User.js
Normal file
@ -0,0 +1,85 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Lifecycle callbacks for the `User` model.
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
|
||||
// Before saving a value.
|
||||
// Fired before an `insert` or `update` query.
|
||||
// beforeSave: function (next) {
|
||||
// // Use `this` to get your current object
|
||||
// next();
|
||||
// },
|
||||
|
||||
// After saving a value.
|
||||
// Fired after an `insert` or `update` query.
|
||||
// afterSave: function (doc, next) {
|
||||
// next();
|
||||
// },
|
||||
|
||||
// Before fetching all values.
|
||||
// Fired before a `fetchAll` operation.
|
||||
// beforeFetchAll: function (next) {
|
||||
// // Use `this` to get your current object
|
||||
// next();
|
||||
// },
|
||||
|
||||
// After fetching all values.
|
||||
// Fired after a `fetchAll` operation.
|
||||
// afterFetchAll: function (doc, next) {
|
||||
// next();
|
||||
// },
|
||||
|
||||
// Fired before a `fetch` operation.
|
||||
// beforeFetch: function (next) {
|
||||
// // Use `this` to get your current object
|
||||
// next();
|
||||
// },
|
||||
|
||||
// After fetching a value.
|
||||
// Fired after a `fetch` operation.
|
||||
// afterFetch: function (doc, next) {
|
||||
// next();
|
||||
// },
|
||||
|
||||
// Before creating a value.
|
||||
// Fired before `insert` query.
|
||||
// beforeCreate: function (next) {
|
||||
// // Use `this` to get your current object
|
||||
// next();
|
||||
// },
|
||||
|
||||
// After creating a value.
|
||||
// Fired after `insert` query.
|
||||
// afterCreate: function (doc, next) {
|
||||
// next();
|
||||
// },
|
||||
|
||||
// Before updating a value.
|
||||
// Fired before an `update` query.
|
||||
// beforeUpdate: function (next) {
|
||||
// // Use `this` to get your current object
|
||||
// next();
|
||||
// },
|
||||
|
||||
// After updating a value.
|
||||
// Fired after an `update` query.
|
||||
// afterUpdate: function (doc, next) {
|
||||
// next();
|
||||
// },
|
||||
|
||||
// Before destroying a value.
|
||||
// Fired before a `delete` query.
|
||||
// beforeDestroy: function (next) {
|
||||
// // Use `this` to get your current object
|
||||
// next();
|
||||
// },
|
||||
|
||||
// After destroying a value.
|
||||
// Fired after a `delete` query.
|
||||
// afterDestroy: function (doc, next) {
|
||||
// next();
|
||||
// }
|
||||
};
|
||||
@ -0,0 +1,11 @@
|
||||
{
|
||||
"connection": "default",
|
||||
"collectionName": "",
|
||||
"info": {
|
||||
"name": "user",
|
||||
"description": ""
|
||||
},
|
||||
"attributes": {
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "strapi-plugin-users-permissions",
|
||||
"version": "3.0.0-alpha.6.4",
|
||||
"version": "3.0.0-alpha.6.7",
|
||||
"description": "This is the description of the plugin.",
|
||||
"strapi": {
|
||||
"name": "Auth & Permissions",
|
||||
@ -39,7 +39,7 @@
|
||||
"plop": "^1.9.0",
|
||||
"prettier": "^1.7.4",
|
||||
"rimraf": "^2.6.2",
|
||||
"strapi-helper-plugin": "3.0.0-alpha.6.4",
|
||||
"strapi-helper-plugin": "3.0.0-alpha.6.7",
|
||||
"webpack": "^3.8.1"
|
||||
},
|
||||
"author": {
|
||||
|
||||
94
packages/strapi-plugin-users-permissions/services/User.js
Normal file
94
packages/strapi-plugin-users-permissions/services/User.js
Normal file
@ -0,0 +1,94 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* User.js service
|
||||
*
|
||||
* @description: A set of functions similar to controller's actions to avoid code duplication.
|
||||
*/
|
||||
|
||||
// Public dependencies.
|
||||
const _ = require('lodash');
|
||||
|
||||
module.exports = {
|
||||
|
||||
/**
|
||||
* Promise to fetch all users.
|
||||
*
|
||||
* @return {Promise}
|
||||
*/
|
||||
|
||||
fetchAll: (params) => {
|
||||
const convertedParams = strapi.utils.models.convertParams('user', params);
|
||||
|
||||
return User
|
||||
.find()
|
||||
.where(convertedParams.where)
|
||||
.sort(convertedParams.sort)
|
||||
.skip(convertedParams.start)
|
||||
.limit(convertedParams.limit)
|
||||
.populate(_.keys(_.groupBy(_.reject(strapi.models.user.associations, {autoPopulate: false}), 'alias')).join(' '));
|
||||
},
|
||||
|
||||
/**
|
||||
* Promise to fetch a/an user.
|
||||
*
|
||||
* @return {Promise}
|
||||
*/
|
||||
|
||||
fetch: (params) => {
|
||||
return User
|
||||
.findOne(params)
|
||||
.populate(_.keys(_.groupBy(_.reject(strapi.models.user.associations, {autoPopulate: false}), 'alias')).join(' '));
|
||||
},
|
||||
|
||||
/**
|
||||
* Promise to add a/an user.
|
||||
*
|
||||
* @return {Promise}
|
||||
*/
|
||||
|
||||
add: async (values) => {
|
||||
const data = await User.create(_.omit(values, _.keys(_.groupBy(strapi.models.user.associations, 'alias'))));
|
||||
await strapi.hook.mongoose.manageRelations('user', _.merge(_.clone(data), { values }));
|
||||
return data;
|
||||
},
|
||||
|
||||
/**
|
||||
* Promise to edit a/an user.
|
||||
*
|
||||
* @return {Promise}
|
||||
*/
|
||||
|
||||
edit: async (params, values) => {
|
||||
// Note: The current method will return the full response of Mongo.
|
||||
// To get the updated object, you have to execute the `findOne()` method
|
||||
// or use the `findOneOrUpdate()` method with `{ new:true }` option.
|
||||
await strapi.hook.mongoose.manageRelations('user', _.merge(_.clone(params), { values }));
|
||||
return User.update(params, values, { multi: true });
|
||||
},
|
||||
|
||||
/**
|
||||
* Promise to remove a/an user.
|
||||
*
|
||||
* @return {Promise}
|
||||
*/
|
||||
|
||||
remove: async params => {
|
||||
// Note: To get the full response of Mongo, use the `remove()` method
|
||||
// or add spent the parameter `{ passRawResult: true }` as second argument.
|
||||
const data = await User.findOneAndRemove(params, {})
|
||||
.populate(_.keys(_.groupBy(_.reject(strapi.models.user.associations, {autoPopulate: false}), 'alias')).join(' '));
|
||||
|
||||
_.forEach(User.associations, async association => {
|
||||
const search = (_.endsWith(association.nature, 'One')) ? { [association.via]: data._id } : { [association.via]: { $in: [data._id] } };
|
||||
const update = (_.endsWith(association.nature, 'One')) ? { [association.via]: null } : { $pull: { [association.via]: data._id } };
|
||||
|
||||
await strapi.models[association.model || association.collection].update(
|
||||
search,
|
||||
update,
|
||||
{ multi: true });
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
};
|
||||
@ -64,7 +64,7 @@ module.exports = strapi => {
|
||||
const router = strapi.koaMiddlewares.routerJoi();
|
||||
|
||||
// Exclude routes with prefix.
|
||||
const excludedRoutes = _.omitBy(plugin.config.routes, o => !o.hasOwnProperty('prefix'));
|
||||
const excludedRoutes = _.omitBy(plugin.config.routes, o => !o.config.hasOwnProperty('prefix'));
|
||||
|
||||
_.forEach(_.omit(plugin.config.routes, _.keys(excludedRoutes)), value => {
|
||||
composeEndpoint(value, name, router)(cb);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user