Three Doc
Three Doc

Reputation: 63

React-Admin! Not able to redirect to forgot password page with customRoutes

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

Answers (1)

Three Doc
Three Doc

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

Related Questions