2016-10-18 1 views
0

Можно ли использовать крючок как restrictToOwner в другом крюке? Например, я хочу, чтобы пользователи могли обновлять свою собственную информацию в целом, но я также хочу, чтобы они имели доступ к определенным свойствам других пользователей. Поэтому, если существует определенный параметр запроса, скажем, комментарий пользователя, я хочу, чтобы пользователь прошел, и в противном случае я хочу использовать крюк restrictToOwner. Конечно, я мог бы написать свой собственный эквивалент restrictToOwner, но я хотел бы использовать уже существующий, если возможно (?). Приведенный ниже код не работает, но я хочу что-то вроде:Комбинируйте крючки друг с другом (крючок в крюке)

module.exports = function(options) { 
    return function(hook) { 
    if (typeof hook.data.comment !== 'undefined') 
     return hook; 
    return auth.restrictToOwner({ ownerField: '_id' }); 
    }; 
}; 

Другая подобная вещь, которую я хочу сделать, это выполнение крючок только если запрос на внешний вызов. Мой внутренний скрипт должен иметь неограниченный доступ. Что-то вроде:

// user/hooks/index.js 
exports.before = { 
    patch: [ 
    globalHooks.ifExternal(auth.restrictToOwner({ ownerField: '_id' })) 
    ] 
}; 
// hooks/index.js 
exports.ifExternal = function(func) { 
    return function(hook) { 
    if (typeof hook.params.provider === 'undefined') //? if internal 
     return hook; 
    return func; 
    }; 
}; 

Заранее спасибо!

ответ

1

auth.restrictToOwner - это функция, которая возвращает другую функцию, которая потребляет объект-крючок.

Таким образом, вы должны назвать это так:

return auth.restrictToOwner({ ownerField: '_id' })(hook); 

Для вашего второго вопроса:

if (!hook.params.provider) { 
    // internal only stuff here. 
} 
+0

Теперь я на обоих перехватывает необработанное отказ обещание 'Ошибка: Не удается прочитать свойство«получить» неопределенного'. Отладка не помогла выяснить, где происходит ошибка. 'perathers-socket-commons: methods Ошибка вызова пользователей :: patch + 18ms {[TypeError: Не могу прочитать свойство« get »неопределенного]' У вас есть идея? – tan