Вы не передаете хорошие аргументы this.validateToken
.
Вы должны дать ему verifyOptions
вместо this.getSecret()
.
Кстати, это не секретно, но это ключ c, поэтому я не рекомендую использовать это имя. И вы дважды читаете клавишу publi c.
Ваша hasPermission
функция должна выглядеть следующим образом:
exports.hasPermission = (token, resource, $Options) => {
const result = this.validateToken(token, $Options);
console.log(result);
if (result.name === 'JsonWebTokenError') {
return false;
} else if (result.permissions) {
let permissionSet = new Set(result.permissions);
console.log('permissions in token', JSON.stringify(permissionSet));
return permissionSet.has(resource);
} else {
return false;
}
};
Не забудьте изменить код, который вызывает эту функцию. $Options
- это тот, который вы используете для подписи своего токена, signOptions
в руководстве.