diff options
| author | Jules Laplace <jules@okfoc.us> | 2017-03-16 15:50:10 +0100 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2017-03-16 15:50:10 +0100 |
| commit | 8e05164678d302700c794feecd50d83357f7719d (patch) | |
| tree | ed5b167c75a2c4fdb5dcd8c409094b607698a0d5 /src/services/user | |
| parent | b8bfbbe14bdb72e4feccb4652c48f4cdb2a5e199 (diff) | |
feathers stuff
Diffstat (limited to 'src/services/user')
| -rw-r--r-- | src/services/user/hooks/index.js | 51 | ||||
| -rw-r--r-- | src/services/user/index.js | 29 | ||||
| -rw-r--r-- | src/services/user/user-model.js | 36 |
3 files changed, 116 insertions, 0 deletions
diff --git a/src/services/user/hooks/index.js b/src/services/user/hooks/index.js new file mode 100644 index 0000000..9dfe425 --- /dev/null +++ b/src/services/user/hooks/index.js @@ -0,0 +1,51 @@ +'use strict'; + +const globalHooks = require('../../../hooks'); +const hooks = require('feathers-hooks'); +const auth = require('feathers-authentication').hooks; + +exports.before = { + all: [], + find: [ + auth.verifyToken(), + auth.populateUser(), + auth.restrictToAuthenticated() + ], + get: [ + auth.verifyToken(), + auth.populateUser(), + auth.restrictToAuthenticated(), + auth.restrictToOwner({ ownerField: 'id' }) + ], + create: [ + auth.hashPassword() + ], + update: [ + auth.verifyToken(), + auth.populateUser(), + auth.restrictToAuthenticated(), + auth.restrictToOwner({ ownerField: 'id' }) + ], + patch: [ + auth.verifyToken(), + auth.populateUser(), + auth.restrictToAuthenticated(), + auth.restrictToOwner({ ownerField: 'id' }) + ], + remove: [ + auth.verifyToken(), + auth.populateUser(), + auth.restrictToAuthenticated(), + auth.restrictToOwner({ ownerField: 'id' }) + ] +}; + +exports.after = { + all: [hooks.remove('password')], + find: [], + get: [], + create: [], + update: [], + patch: [], + remove: [] +}; diff --git a/src/services/user/index.js b/src/services/user/index.js new file mode 100644 index 0000000..3f3438f --- /dev/null +++ b/src/services/user/index.js @@ -0,0 +1,29 @@ +'use strict'; + +const service = require('feathers-sequelize'); +const user = require('./user-model'); +const hooks = require('./hooks'); + +module.exports = function(){ + const app = this; + + const options = { + Model: user(app.get('sequelize')), + paginate: { + default: 5, + max: 25 + } + }; + + // Initialize our service with any options it requires + app.use('/users', service(options)); + + // Get our initialize service to that we can bind hooks + const userService = app.service('/users'); + + // Set up our before hooks + userService.before(hooks.before); + + // Set up our after hooks + userService.after(hooks.after); +}; diff --git a/src/services/user/user-model.js b/src/services/user/user-model.js new file mode 100644 index 0000000..03db95b --- /dev/null +++ b/src/services/user/user-model.js @@ -0,0 +1,36 @@ +'use strict'; + +// user-model.js - A sequelize model +// +// See http://docs.sequelizejs.com/en/latest/docs/models-definition/ +// for more of what you can do here. + +const Sequelize = require('sequelize'); + +module.exports = function(sequelize) { + const user = sequelize.define('users', { + email: { + type: Sequelize.STRING, + allowNull: false, + unique: true + }, + password: { + type: Sequelize.STRING, + allowNull: false + }, + role: { + type: Sequelize.ENUM('user', 'manager', 'admin'), + allowNull: false + }, + goal: { + type: Sequelize.INTEGER, + allowNull: false + }, + }, { + freezeTableName: true + }); + + user.sync(); + + return user; +}; |
