summaryrefslogtreecommitdiff
path: root/src/services/meal/hooks/index.js
blob: f30e5a0f125fe77d28e61ef9bbd60d185a58035c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
'use strict';

const globalHooks = require('../../../hooks');
const hooks = require('feathers-hooks');
const auth = require('feathers-authentication').hooks;
const feathersErrors = require('feathers-errors');

const roleConfig = {
  fieldName: 'role',
  roles: ['admin'],
  owner: true,
  ownerField: 'userid'
}

function populateUserId (){
  return function(hook) {
    var _this = this;

    return new Promise(function (resolve, reject) {
      if (! hook.data.userid) {
        hook.data.userid = hook.userid
      }
      else if (hook.params.user && hook.params.user.id !== hook.data.userid && hook.params.user.role !== 'admin') {
        return reject(new feathersErrors.default.Forbidden('You do not have permission to make meals for this user.'))
      }
      resolve(hook)
    });
  }
}

exports.before = {
  all: [
    auth.verifyToken(),
    auth.populateUser(),
    auth.restrictToAuthenticated(),
  ],
  find: [],
  get: [],
  create: [
    populateUserId(),
  ],
  update: [
    auth.restrictToRoles(roleConfig),
  ],
  patch: [
    auth.restrictToRoles(roleConfig),
  ],
  remove: [
    auth.restrictToRoles(roleConfig),
  ]
};

exports.after = {
  all: [],
  find: [],
  get: [],
  create: [],
  update: [],
  patch: [],
  remove: [],
};