Я использую ra-loopback. И я хочу добавить роль во время авторизации. Я пытался добавить такую роль:
./authClient.js
import storage from './storage';
import {decode} from 'jsonwebtoken';
export const authClient = (loginApiUrl, noAccessPage = '/login') => {
return (type, params) => {
if (type === 'AUTH_LOGIN') {
const request = new Request(loginApiUrl, {
method: 'POST',
body: JSON.stringify(params),
headers: new Headers({ 'Content-Type': 'application/json' }),
});
return fetch(request)
.then(response => {
if (response.status < 200 || response.status >= 300) {
throw new Error(response.statusText);
}
return response.json();
})
.then(({token}) => {
const decoded = decode(token);
storage.save('lbtoken',token);
storage.save('role', decoded.role);
});
}
if (type === 'AUTH_LOGOUT') {
storage.remove('lbtoken');
return Promise.resolve();
}
if (type === 'AUTH_ERROR') {
const status = params.message.status;
if (status === 401 || status === 403) {
storage.remove('lbtoken');
return Promise.reject();
}
return Promise.resolve();
}
if (type === 'AUTH_CHECK') {
const token = storage.load('lbtoken');
if (token && token.id) {
return Promise.resolve();
} else {
storage.remove('lbtoken');
return Promise.reject({ redirectTo: noAccessPage });
}
}
if (type === 'AUTH_GET_PERMISSIONS') {
const role = localStorage.getItem('role');
return role ? Promise.resolve(role) : Promise.reject();
}
return Promise.reject('Unknown method');
};
};
Когда я пытался войти в систему, я получаю сообщение об ошибке 'Не удается прочитать свойство' role 'из null' .
На самом деле, я хочу добавить разрешения для администратора.
Я хочу, чтобы некоторые ресурсы были видны только администратору. Я знаю, как это происходит, но я не знаю, как добавить роль пользователю во время авторизации.