4
votes

Comment implémenter la page de mot de passe oublié sur react-admin

J'ai un tableau de bord implémenté sur react-admin . Le processus d'authentification a été effectué en suivant ce tutoriel . < / p>

Je dois maintenant implémenter un écran de mot de passe oublié, mais le problème est que cet écran doit être accessible sans être connecté ...

J'ai pensé à 2 façons possibles de mettre en œuvre ceci:

  1. Idéalement, je voudrais configurer react-admin pour autoriser l'accès non authentifié à une route particulière. Je ne sais pas comment faire cela, ou si c'est possible ... J'ai trouvé ce Github problème mentionnant cela comme une amélioration, mais il n'explique pas comment contourner le problème.
  2. Implémentez cet écran séparément dans react et gérez le routage vers cette page séparément. Je ne sais pas non plus comment faire cela sur le framework ...

Quelqu'un peut-il expliquer comment implémenter l'une ou l'autre option sur le framework?

Merci d'avance,


4 commentaires

Même question ici. Je ne pense pas que ce soit actuellement possible avec react-admin. Mais j'adorerais me tromper à ce sujet.


Je pense avoir trouvé un moyen, basé sur un commentaire github ... Dites-moi ce que vous en pensez


Hah, c'est moi sur github. J'ai découvert l'exemple après avoir posté ici. Heureux que vous ayez trouvé un certain succès.


Ha, j'ai imaginé que ça pouvait être toi. Cela m'a envoyé sur la bonne voie ... Merci mec


3 Réponses :


7
votes

D'après un commentaire sur le problème Github, je a fini par implémenter une solution de contournement basée sur l ' exemple simple .

La principale chose que j'ai faite a été d'ajouter quelques itinéraires personnalisés avec l'option noLayout. Ces itinéraires personnalisés ne semblent pas passer par l'authentification pour une raison que je n'ai pas trouvée dans la documentation.

J'ai donc redéfini mon fichier App.js:

const App = () => (
  <Admin
        loginPage={Login}
        authProvider={authProvider}
        dataProvider={dataProvider}
        i18nProvider={i18nProvider}
        title="Example Admin"
        locale="en"
        customReducers={{ tree }}
        customRoutes={[
            <Route exact path="/forgotPassword" component={ForgotPassword} noLayout/>,
            <Route exact path="/resetPassword" component={ResetPassword} noLayout/>,
        ]}
    >
        {permissions => [
            <Resource name="users" {...users} />,
        ]}
  </Admin>
);

Quoi qu'il en soit, c'est la solution que j'ai trouvée, je ne sais pas si c'est la bonne. Veuillez me faire savoir si vous trouvez quelque chose de mieux.


0 commentaires

0
votes

J'utilise également une solution comme celle-ci.

Mais je ne peux pas utiliser notify lors de l'ajout de noLayout.

Est-ce que vous avoir utilisé notifier avec

<Route exact path="/forgotPassword" component={ForgotPassword} noLayout/>


1 commentaires

J'ai trouvé dans la source du composant . Je dois ajouter dans la page de mot de passe oublié



1
votes

J'ai eu un problème similaire et l'ajout d'un itinéraire personnalisé avec l'option noLayout m'a quand même renvoyé à l'écran de connexion.

Il s'est avéré que ce n'était pas la partie checkAuth du authProvider à l'origine de cela.

La cause était getPermissions faisant partie du authProvider

Dans la condition où les autorisations ne pouvaient pas être trouvées, j'avais: return Promise.reject ();

Changer ceci en: return Promise.resolve ([]); l'a résolu pour moi.


0 commentaires