mirror of
				https://github.com/strapi/strapi.git
				synced 2025-10-31 01:47:13 +00:00 
			
		
		
		
	Fix user update and boolean values in DB
This commit is contained in:
		
							parent
							
								
									c4b7ae55e6
								
							
						
					
					
						commit
						3e53d7c8c2
					
				| @ -643,13 +643,32 @@ module.exports = ({ models, target, plugin = false }, ctx) => { | |||||||
|             }, |             }, | ||||||
|           ]; |           ]; | ||||||
| 
 | 
 | ||||||
|           const jsonFormatter = attributes => { |           const formatter = attributes => { | ||||||
|             Object.keys(attributes).map(key => { |             Object.keys(attributes).map(key => { | ||||||
|               const attr = definition.attributes[key] || {}; |               const attr = definition.attributes[key] || {}; | ||||||
| 
 | 
 | ||||||
|               if (attr.type === 'json') { |               if (attr.type === 'json') { | ||||||
|                 attributes[key] = JSON.parse(attributes[key]); |                 attributes[key] = JSON.parse(attributes[key]); | ||||||
|               } |               } | ||||||
|  | 
 | ||||||
|  |               if (attr.type === 'boolean') { | ||||||
|  |                 if (typeof attributes[key] === 'boolean') { | ||||||
|  |                   return; | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 const strVal = | ||||||
|  |                   attributes[key] !== null | ||||||
|  |                     ? attributes[key].toString() | ||||||
|  |                     : attributes[key]; | ||||||
|  | 
 | ||||||
|  |                 if (strVal === '1') { | ||||||
|  |                   attributes[key] = true; | ||||||
|  |                 } else if (strVal === '0') { | ||||||
|  |                   attributes[key] = false; | ||||||
|  |                 } else { | ||||||
|  |                   attributes[key] = null; | ||||||
|  |                 } | ||||||
|  |               } | ||||||
|             }); |             }); | ||||||
|           }; |           }; | ||||||
| 
 | 
 | ||||||
| @ -659,10 +678,10 @@ module.exports = ({ models, target, plugin = false }, ctx) => { | |||||||
|             if (event.name.indexOf('collection') !== -1) { |             if (event.name.indexOf('collection') !== -1) { | ||||||
|               fn = instance => |               fn = instance => | ||||||
|                 instance.models.map(entry => { |                 instance.models.map(entry => { | ||||||
|                   jsonFormatter(entry.attributes); |                   formatter(entry.attributes); | ||||||
|                 }); |                 }); | ||||||
|             } else { |             } else { | ||||||
|               fn = instance => jsonFormatter(instance.attributes); |               fn = instance => formatter(instance.attributes); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             this.on(event.name, instance => { |             this.on(event.name, instance => { | ||||||
|  | |||||||
| @ -15,11 +15,13 @@ const _ = require('lodash'); | |||||||
| // Array of supported clients.
 | // Array of supported clients.
 | ||||||
| const CLIENTS = [ | const CLIENTS = [ | ||||||
|   'pg', |   'pg', | ||||||
|   'mysql', 'mysql2', |   'mysql', | ||||||
|  |   'mysql2', | ||||||
|   'sqlite3', |   'sqlite3', | ||||||
|   'mariasql', |   'mariasql', | ||||||
|   'oracle', 'strong-oracle', |   'oracle', | ||||||
|   'mssql' |   'strong-oracle', | ||||||
|  |   'mssql', | ||||||
| ]; | ]; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -28,7 +30,6 @@ const CLIENTS = [ | |||||||
| 
 | 
 | ||||||
| module.exports = strapi => { | module.exports = strapi => { | ||||||
|   const hook = { |   const hook = { | ||||||
| 
 |  | ||||||
|     /** |     /** | ||||||
|      * Default options |      * Default options | ||||||
|      */ |      */ | ||||||
| @ -36,8 +37,8 @@ module.exports = strapi => { | |||||||
|     defaults: { |     defaults: { | ||||||
|       connection: { |       connection: { | ||||||
|         host: 'localhost', |         host: 'localhost', | ||||||
|         charset: 'utf8' |         charset: 'utf8', | ||||||
|       } |       }, | ||||||
|     }, |     }, | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -46,8 +47,11 @@ module.exports = strapi => { | |||||||
| 
 | 
 | ||||||
|     initialize: cb => { |     initialize: cb => { | ||||||
|       // For each connection in the config register a new Knex connection.
 |       // For each connection in the config register a new Knex connection.
 | ||||||
|       _.forEach(_.pickBy(strapi.config.connections, {connector: 'strapi-hook-bookshelf'}), (connection, name) => { |       _.forEach( | ||||||
| 
 |         _.pickBy(strapi.config.connections, { | ||||||
|  |           connector: 'strapi-hook-bookshelf', | ||||||
|  |         }), | ||||||
|  |         (connection, name) => { | ||||||
|           // Make sure we use the client even if the typo is not the exact one.
 |           // Make sure we use the client even if the typo is not the exact one.
 | ||||||
|           switch (connection.settings.client) { |           switch (connection.settings.client) { | ||||||
|             case 'postgre': |             case 'postgre': | ||||||
| @ -69,7 +73,13 @@ module.exports = strapi => { | |||||||
| 
 | 
 | ||||||
|           // Make sure the client is supported.
 |           // Make sure the client is supported.
 | ||||||
|           if (!_.includes(CLIENTS, connection.settings.client)) { |           if (!_.includes(CLIENTS, connection.settings.client)) { | ||||||
|           strapi.log.error('The client `' + connection.settings.client + '` for the `' + name + '` connection is not supported.'); |             strapi.log.error( | ||||||
|  |               'The client `' + | ||||||
|  |                 connection.settings.client + | ||||||
|  |                 '` for the `' + | ||||||
|  |                 name + | ||||||
|  |                 '` connection is not supported.' | ||||||
|  |             ); | ||||||
|             strapi.stop(); |             strapi.stop(); | ||||||
|           } |           } | ||||||
| 
 | 
 | ||||||
| @ -79,16 +89,27 @@ module.exports = strapi => { | |||||||
|           try { |           try { | ||||||
|             client = require(connection.settings.client); |             client = require(connection.settings.client); | ||||||
|           } catch (err) { |           } catch (err) { | ||||||
|           strapi.log.error('The client `' + connection.settings.client + '` is not installed.'); |             strapi.log.error( | ||||||
|           strapi.log.error('You can install it with `$ npm install ' + connection.settings.client + ' --save`.'); |               'The client `' + | ||||||
|  |                 connection.settings.client + | ||||||
|  |                 '` is not installed.' | ||||||
|  |             ); | ||||||
|  |             strapi.log.error( | ||||||
|  |               'You can install it with `$ npm install ' + | ||||||
|  |                 connection.settings.client + | ||||||
|  |                 ' --save`.' | ||||||
|  |             ); | ||||||
|             strapi.stop(); |             strapi.stop(); | ||||||
|           } |           } | ||||||
| 
 | 
 | ||||||
|         const options = _.defaultsDeep({ |           const options = _.defaultsDeep( | ||||||
|  |             { | ||||||
|               client: connection.settings.client, |               client: connection.settings.client, | ||||||
|               connection: { |               connection: { | ||||||
|                 host: _.get(connection.settings, 'host'), |                 host: _.get(connection.settings, 'host'), | ||||||
|             user: _.get(connection.settings, 'username') || _.get(connection.settings, 'user'), |                 user: | ||||||
|  |                   _.get(connection.settings, 'username') || | ||||||
|  |                   _.get(connection.settings, 'user'), | ||||||
|                 password: _.get(connection.settings, 'password'), |                 password: _.get(connection.settings, 'password'), | ||||||
|                 database: _.get(connection.settings, 'database'), |                 database: _.get(connection.settings, 'database'), | ||||||
|                 charset: _.get(connection.settings, 'charset'), |                 charset: _.get(connection.settings, 'charset'), | ||||||
| @ -97,36 +118,68 @@ module.exports = strapi => { | |||||||
|                 socket: _.get(connection.settings, 'socketPath'), |                 socket: _.get(connection.settings, 'socketPath'), | ||||||
|                 ssl: _.get(connection.settings, 'ssl', false), |                 ssl: _.get(connection.settings, 'ssl', false), | ||||||
|                 timezone: _.get(connection.settings, 'timezone', 'utc'), |                 timezone: _.get(connection.settings, 'timezone', 'utc'), | ||||||
|             filename: _.get(connection.settings, 'filename', '.tmp/data.db') |                 filename: _.get( | ||||||
|  |                   connection.settings, | ||||||
|  |                   'filename', | ||||||
|  |                   '.tmp/data.db' | ||||||
|  |                 ), | ||||||
|               }, |               }, | ||||||
|               debug: _.get(connection.options, 'debug', false), |               debug: _.get(connection.options, 'debug', false), | ||||||
|           acquireConnectionTimeout: _.get(connection.options, 'acquireConnectionTimeout'), |               acquireConnectionTimeout: _.get( | ||||||
|  |                 connection.options, | ||||||
|  |                 'acquireConnectionTimeout' | ||||||
|  |               ), | ||||||
|               migrations: _.get(connection.options, 'migrations'), |               migrations: _.get(connection.options, 'migrations'), | ||||||
|               useNullAsDefault: _.get(connection.options, 'useNullAsDefault'), |               useNullAsDefault: _.get(connection.options, 'useNullAsDefault'), | ||||||
|         }, strapi.config.hook.settings.knex); |             }, | ||||||
|  |             strapi.config.hook.settings.knex | ||||||
|  |           ); | ||||||
| 
 | 
 | ||||||
|           if (connection.settings.client !== 'sqlite3') { |           if (connection.settings.client !== 'sqlite3') { | ||||||
|             options.pool = { |             options.pool = { | ||||||
|               min: _.get(connection.options, 'pool.min', 0), |               min: _.get(connection.options, 'pool.min', 0), | ||||||
|               max: _.get(connection.options, 'pool.max', 10), |               max: _.get(connection.options, 'pool.max', 10), | ||||||
|             acquireTimeoutMillis: _.get(connection.options, 'pool.acquireTimeoutMillis', 2000), |               acquireTimeoutMillis: _.get( | ||||||
|             createTimeoutMillis: _.get(connection.options, 'pool.createTimeoutMillis', 2000), |                 connection.options, | ||||||
|             idleTimeoutMillis: _.get(connection.options, 'pool.idleTimeoutMillis', 30000), |                 'pool.acquireTimeoutMillis', | ||||||
|             reapIntervalMillis: _.get(connection.options, 'pool.reapIntervalMillis', 1000), |                 2000 | ||||||
|             createRetryIntervalMillis: _.get(connection.options, 'pool.createRetryIntervalMillis', 200), |               ), | ||||||
|  |               createTimeoutMillis: _.get( | ||||||
|  |                 connection.options, | ||||||
|  |                 'pool.createTimeoutMillis', | ||||||
|  |                 2000 | ||||||
|  |               ), | ||||||
|  |               idleTimeoutMillis: _.get( | ||||||
|  |                 connection.options, | ||||||
|  |                 'pool.idleTimeoutMillis', | ||||||
|  |                 30000 | ||||||
|  |               ), | ||||||
|  |               reapIntervalMillis: _.get( | ||||||
|  |                 connection.options, | ||||||
|  |                 'pool.reapIntervalMillis', | ||||||
|  |                 1000 | ||||||
|  |               ), | ||||||
|  |               createRetryIntervalMillis: _.get( | ||||||
|  |                 connection.options, | ||||||
|  |                 'pool.createRetryIntervalMillis', | ||||||
|  |                 200 | ||||||
|  |               ), | ||||||
|             }; |             }; | ||||||
|           } |           } | ||||||
| 
 | 
 | ||||||
|           // Resolve path to the directory containing the database file.
 |           // Resolve path to the directory containing the database file.
 | ||||||
|           const fileDirectory = options.connection.filename |           const fileDirectory = options.connection.filename | ||||||
|           ? path.dirname(path.resolve(strapi.config.appPath, options.connection.filename)) |             ? path.dirname( | ||||||
|  |                 path.resolve(strapi.config.appPath, options.connection.filename) | ||||||
|  |               ) | ||||||
|             : ''; |             : ''; | ||||||
| 
 | 
 | ||||||
|           switch (options.client) { |           switch (options.client) { | ||||||
|             case 'mysql': |             case 'mysql': | ||||||
|               options.connection.typeCast = (field, next) => { |               options.connection.typeCast = (field, next) => { | ||||||
|               if (field.type === 'TINY' && field.length === 1) { |                 if (field.type == 'TINY' && field.length == 1) { | ||||||
|                 return (field.string() === '1'); |                   let value = field.string(); | ||||||
|  |                   return value ? value == '1' : null; | ||||||
|                 } |                 } | ||||||
|                 return next(); |                 return next(); | ||||||
|               }; |               }; | ||||||
| @ -139,10 +192,13 @@ module.exports = strapi => { | |||||||
|                   min: _.get(connection.options, 'pool.min') || 0, |                   min: _.get(connection.options, 'pool.min') || 0, | ||||||
|                   max: _.get(connection.options, 'pool.max') || 10, |                   max: _.get(connection.options, 'pool.max') || 10, | ||||||
|                   afterCreate: (conn, cb) => { |                   afterCreate: (conn, cb) => { | ||||||
|                   conn.query(`SET SESSION SCHEMA '${options.connection.schema}';`, (err) => { |                     conn.query( | ||||||
|  |                       `SET SESSION SCHEMA '${options.connection.schema}';`, | ||||||
|  |                       err => { | ||||||
|                         cb(err, conn); |                         cb(err, conn); | ||||||
|                   }); |  | ||||||
|                       } |                       } | ||||||
|  |                     ); | ||||||
|  |                   }, | ||||||
|                 }; |                 }; | ||||||
|               } else { |               } else { | ||||||
|                 delete options.connection.schema; |                 delete options.connection.schema; | ||||||
| @ -158,12 +214,15 @@ module.exports = strapi => { | |||||||
| 
 | 
 | ||||||
|               // Force base directory.
 |               // Force base directory.
 | ||||||
|               // Note: it removes the warning logs when starting the administration in development mode.
 |               // Note: it removes the warning logs when starting the administration in development mode.
 | ||||||
|             options.connection.filename = path.resolve(strapi.config.appPath, options.connection.filename); |               options.connection.filename = path.resolve( | ||||||
|  |                 strapi.config.appPath, | ||||||
|  |                 options.connection.filename | ||||||
|  |               ); | ||||||
| 
 | 
 | ||||||
|               // Disable warn log
 |               // Disable warn log
 | ||||||
|               // .returning() is not supported by sqlite3 and will not have any effect.
 |               // .returning() is not supported by sqlite3 and will not have any effect.
 | ||||||
|               options.log = { |               options.log = { | ||||||
|               warn: () => {} |                 warn: () => {}, | ||||||
|               }; |               }; | ||||||
| 
 | 
 | ||||||
|               break; |               break; | ||||||
| @ -177,17 +236,23 @@ module.exports = strapi => { | |||||||
|             // Try to require from local dependency.
 |             // Try to require from local dependency.
 | ||||||
|             const connection = require('knex')(options); |             const connection = require('knex')(options); | ||||||
|             _.set(strapi, `connections.${name}`, connection); |             _.set(strapi, `connections.${name}`, connection); | ||||||
| 
 |  | ||||||
|           } catch (err) { |           } catch (err) { | ||||||
|           strapi.log.error('Impossible to use the `' + name + '` connection...'); |             strapi.log.error( | ||||||
|           strapi.log.warn('Be sure that your client `' + name + '` are in the same node_modules directory'); |               'Impossible to use the `' + name + '` connection...' | ||||||
|  |             ); | ||||||
|  |             strapi.log.warn( | ||||||
|  |               'Be sure that your client `' + | ||||||
|  |                 name + | ||||||
|  |                 '` are in the same node_modules directory' | ||||||
|  |             ); | ||||||
|             strapi.log.error(err); |             strapi.log.error(err); | ||||||
|             strapi.stop(); |             strapi.stop(); | ||||||
|           } |           } | ||||||
|       }); |         } | ||||||
|  |       ); | ||||||
| 
 | 
 | ||||||
|       cb(); |       cb(); | ||||||
|     } |     }, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   return hook; |   return hook; | ||||||
|  | |||||||
| @ -59,9 +59,10 @@ module.exports = { | |||||||
|    * @return {Object} |    * @return {Object} | ||||||
|    */ |    */ | ||||||
|   async findOne(ctx) { |   async findOne(ctx) { | ||||||
|     let data = await strapi.plugins['users-permissions'].services.user.fetch( |     const { id } = ctx.params; | ||||||
|       ctx.params |     let data = await strapi.plugins['users-permissions'].services.user.fetch({ | ||||||
|     ); |       id, | ||||||
|  |     }); | ||||||
| 
 | 
 | ||||||
|     if (data) { |     if (data) { | ||||||
|       data = sanitizeUser(data); |       data = sanitizeUser(data); | ||||||
| @ -91,11 +92,11 @@ module.exports = { | |||||||
|     if (!username) return ctx.badRequest('missing.username'); |     if (!username) return ctx.badRequest('missing.username'); | ||||||
|     if (!password) return ctx.badRequest('missing.password'); |     if (!password) return ctx.badRequest('missing.password'); | ||||||
| 
 | 
 | ||||||
|     const adminsWithSameUsername = await strapi |     const userWithSameUsername = await strapi | ||||||
|       .query('user', 'users-permissions') |       .query('user', 'users-permissions') | ||||||
|       .findOne({ username }); |       .findOne({ username }); | ||||||
| 
 | 
 | ||||||
|     if (adminsWithSameUsername) { |     if (userWithSameUsername) { | ||||||
|       return ctx.badRequest( |       return ctx.badRequest( | ||||||
|         null, |         null, | ||||||
|         ctx.request.admin |         ctx.request.admin | ||||||
| @ -108,11 +109,11 @@ module.exports = { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (advanced.unique_email) { |     if (advanced.unique_email) { | ||||||
|       const user = await strapi |       const userWithSameEmail = await strapi | ||||||
|         .query('user', 'users-permissions') |         .query('user', 'users-permissions') | ||||||
|         .findOne({ email }); |         .findOne({ email }); | ||||||
| 
 | 
 | ||||||
|       if (user) { |       if (userWithSameEmail) { | ||||||
|         return ctx.badRequest( |         return ctx.badRequest( | ||||||
|           null, |           null, | ||||||
|           ctx.request.admin |           ctx.request.admin | ||||||
| @ -126,10 +127,7 @@ module.exports = { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     const user = { |     const user = { | ||||||
|       email, |       ...ctx.request.body, | ||||||
|       username, |  | ||||||
|       password, |  | ||||||
|       role, |  | ||||||
|       provider: 'local', |       provider: 'local', | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
| @ -160,7 +158,6 @@ module.exports = { | |||||||
|    * @return {Object} |    * @return {Object} | ||||||
|    */ |    */ | ||||||
|   async update(ctx) { |   async update(ctx) { | ||||||
|     try { |  | ||||||
|     const advancedConfigs = await strapi |     const advancedConfigs = await strapi | ||||||
|       .store({ |       .store({ | ||||||
|         environment: '', |         environment: '', | ||||||
| @ -170,20 +167,35 @@ module.exports = { | |||||||
|       }) |       }) | ||||||
|       .get(); |       .get(); | ||||||
| 
 | 
 | ||||||
|       if (advancedConfigs.unique_email && ctx.request.body.email) { |     const { id } = ctx.params; | ||||||
|         const users = await strapi.plugins[ |     const { email, username, password } = ctx.request.body; | ||||||
|           'users-permissions' |  | ||||||
|         ].services.user.fetchAll({ email: ctx.request.body.email }); |  | ||||||
| 
 | 
 | ||||||
|         if ( |     if (!email) return ctx.badRequest('missing.email'); | ||||||
|           users && |     if (!username) return ctx.badRequest('missing.username'); | ||||||
|           _.find( |     if (!password) return ctx.badRequest('missing.password'); | ||||||
|             users, | 
 | ||||||
|             user => |     const userWithSameUsername = await strapi | ||||||
|               (user.id || user._id).toString() !== |       .query('user', 'users-permissions') | ||||||
|               (ctx.params.id || ctx.params._id) |       .findOne({ username }); | ||||||
|           ) | 
 | ||||||
|         ) { |     if (userWithSameUsername && userWithSameUsername.id != id) { | ||||||
|  |       return ctx.badRequest( | ||||||
|  |         null, | ||||||
|  |         ctx.request.admin | ||||||
|  |           ? adminError({ | ||||||
|  |               message: 'Auth.form.error.username.taken', | ||||||
|  |               field: ['username'], | ||||||
|  |             }) | ||||||
|  |           : 'username.alreadyTaken.' | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (advancedConfigs.unique_email) { | ||||||
|  |       const userWithSameEmail = await strapi | ||||||
|  |         .query('user', 'users-permissions') | ||||||
|  |         .findOne({ email }); | ||||||
|  | 
 | ||||||
|  |       if (userWithSameEmail && userWithSameEmail.id != id) { | ||||||
|         return ctx.badRequest( |         return ctx.badRequest( | ||||||
|           null, |           null, | ||||||
|           ctx.request.admin |           ctx.request.admin | ||||||
| @ -191,63 +203,29 @@ module.exports = { | |||||||
|                 message: 'Auth.form.error.email.taken', |                 message: 'Auth.form.error.email.taken', | ||||||
|                 field: ['email'], |                 field: ['email'], | ||||||
|               }) |               }) | ||||||
|               : 'Email is already taken.' |             : 'email.alreadyTaken' | ||||||
|         ); |         ); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|       const user = await strapi.plugins[ |     const user = await strapi.plugins['users-permissions'].services.user.fetch({ | ||||||
|         'users-permissions' |       id, | ||||||
|       ].services.user.fetch(ctx.params); |     }); | ||||||
| 
 | 
 | ||||||
|       if (_.get(ctx.request, 'body.password') === user.password) { |     let updateData = { | ||||||
|  |       ...ctx.request.body, | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     if (password === user.password) { | ||||||
|       delete ctx.request.body.password; |       delete ctx.request.body.password; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|       if ( |  | ||||||
|         _.get(ctx.request, 'body.role', '').toString() === '0' && |  | ||||||
|         (!_.get(ctx.state, 'user.role') || |  | ||||||
|           _.get(ctx.state, 'user.role', '').toString() !== '0') |  | ||||||
|       ) { |  | ||||||
|         delete ctx.request.body.role; |  | ||||||
|       } |  | ||||||
| 
 |  | ||||||
|       if (ctx.request.body.email && advancedConfigs.unique_email) { |  | ||||||
|         const user = await strapi.query('user', 'users-permissions').findOne({ |  | ||||||
|           email: ctx.request.body.email, |  | ||||||
|         }); |  | ||||||
| 
 |  | ||||||
|         if ( |  | ||||||
|           user !== null && |  | ||||||
|           (user.id || user._id).toString() !== (ctx.params.id || ctx.params._id) |  | ||||||
|         ) { |  | ||||||
|           return ctx.badRequest( |  | ||||||
|             null, |  | ||||||
|             ctx.request.admin |  | ||||||
|               ? adminError({ |  | ||||||
|                   message: 'Auth.form.error.email.taken', |  | ||||||
|                   field: ['email'], |  | ||||||
|                 }) |  | ||||||
|               : 'Email is already taken.' |  | ||||||
|           ); |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
| 
 |  | ||||||
|     const data = await strapi.plugins['users-permissions'].services.user.edit( |     const data = await strapi.plugins['users-permissions'].services.user.edit( | ||||||
|         ctx.params, |       { id }, | ||||||
|         ctx.request.body |       updateData | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|       // Send 200 `ok`
 |  | ||||||
|     ctx.send(data); |     ctx.send(data); | ||||||
|     } catch (error) { |  | ||||||
|       ctx.badRequest( |  | ||||||
|         null, |  | ||||||
|         ctx.request.admin |  | ||||||
|           ? [{ messages: [{ id: error.message, field: error.field }] }] |  | ||||||
|           : error.message |  | ||||||
|       ); |  | ||||||
|     } |  | ||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|  | |||||||
| @ -6,8 +6,6 @@ | |||||||
|  * @description: A set of functions similar to controller's actions to avoid code duplication. |  * @description: A set of functions similar to controller's actions to avoid code duplication. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| // Public dependencies.
 |  | ||||||
| const _ = require('lodash'); |  | ||||||
| const bcrypt = require('bcryptjs'); | const bcrypt = require('bcryptjs'); | ||||||
| 
 | 
 | ||||||
| module.exports = { | module.exports = { | ||||||
| @ -39,19 +37,7 @@ module.exports = { | |||||||
|       ].services.user.hashPassword(values); |       ].services.user.hashPassword(values); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Use Content Manager business logic to handle relation.
 |     return strapi.query('user', 'users-permissions').update(params, values); | ||||||
|     if (strapi.plugins['content-manager']) { |  | ||||||
|       params.model = 'user'; |  | ||||||
|       params.id = params._id || params.id; |  | ||||||
| 
 |  | ||||||
|       return await strapi.plugins['content-manager'].services[ |  | ||||||
|         'contentmanager' |  | ||||||
|       ].edit(params, values, 'users-permissions'); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return strapi |  | ||||||
|       .query('user', 'users-permissions') |  | ||||||
|       .update(_.assign(params, values)); |  | ||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
| @ -59,9 +45,7 @@ module.exports = { | |||||||
|    * @return {Promise} |    * @return {Promise} | ||||||
|    */ |    */ | ||||||
|   fetch(params) { |   fetch(params) { | ||||||
|     return strapi |     return strapi.query('user', 'users-permissions').findOne(params); | ||||||
|       .query('user', 'users-permissions') |  | ||||||
|       .findOne(_.pick(params, ['_id', 'id'])); |  | ||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Alexandre Bodin
						Alexandre Bodin