Reputation: 63
I am using authProvider. So what I want I have given a link to the login page i.e. forgot password. When I click on it, It is opening the login page every time but yes it changes the url. I think because of authprovider it take me to the login page every time. Please give me a better solution.
This is my custom route
<Route
exact
path="/forgot-password"
component={props => <ForgotPassword {...props} />}
noLayout
/>
And this my authProvider
import { AuthProvider } from 'ra-core';
const authProvider: AuthProvider = {
login: ({ username, password }) => {
const body = new FormData()
body.append('email', username)
body.append('password', password)
const request = new Request('https://path.com/login', {
method: 'POST',
body: body,
headers: new Headers(
{
// 'Content-Type': 'multipart/form-data',
'Authorization': 'YWQ1YjJKUGFVBGFHGRiMGQ5MTDFREwMDZiY2Y1ZASWU1Yjc3Zg=='
}
),
});
return fetch(request)
.then(response => {
if (response.status < 200 || response.status >= 300) {
throw new Error(response.statusText);
}
return response.json();
})
.then(({ access_token, role }) => {
sessionStorage.setItem('token', access_token);
sessionStorage.setItem('username', username);
sessionStorage.setItem('password', password);
sessionStorage.setItem('permissions', role);
});
},
logout: () => {
sessionStorage.removeItem('username');
sessionStorage.removeItem('token');
sessionStorage.removeItem('password');
sessionStorage.removeItem('permissions');
return Promise.resolve();
},
checkError: () => {
return Promise.resolve()
},
//@ts-ignore
checkAuth: () => {
const token = sessionStorage.getItem('token');
return Promise.resolve(token);
},
getPermissions: () => {
const role = sessionStorage.getItem('permissions');
return role ? Promise.resolve(role) : Promise.reject();
}
};
export default authProvider;
This is where I am using custom route
<Admin
title=""
dataProvider={dataProvider}
customReducers={{ theme: themeReducer }}
customRoutes={customRoutes}
authProvider={authProvider}
dashboard={Dashboard}
loginPage={Login}
layout={Layout}
i18nProvider={i18nProvider}
customSagas={[ logoutSaga ]}
>
{(permissions: any) => [
<Resource name="users" options={{ label: 'Users' }} {...users} />,
<Resource name="brands" options={{ label: 'Car Brands' }} {...brands} />,
<Resource name="models" options={{ label: 'Car Models' }} {...models} />,
permissions === 'SuperAdmin'
? <Resource name="admins" options={{ label: 'Admins' }} {...admins} />
: null,
<Resource name="terms" options={{ label: 'Terms & Conditions' }} {...terms} />,
]}
</Admin>
Upvotes: 1
Views: 549
Reputation: 63
Yes I got the issue.
<Admin
title=""
dataProvider={dataProvider}
customReducers={{ theme: themeReducer }}
customRoutes={customRoutes}
authProvider={authProvider}
dashboard={Dashboard}
loginPage={Login}
layout={Layout}
i18nProvider={i18nProvider}
customSagas={[ logoutSaga ]}
>
<Resource name="users" options={{ label: 'Users' }} {...users} />
<Resource name="brands" options={{ label: 'Car Brands' }} {...brands} />
<Resource name="models" options={{ label: 'Car Models' }} {...models} />
{(permissions: any) => [
permissions === 'SuperAdmin'
? <Resource name="admins" options={{ label: 'Admins' }} {...admins} />
: null,
]}
<Resource name="terms" options={{ label: 'Terms & Conditions' }} {...terms}
/>
</Admin>
Upvotes: 1