Créer une application Web à partir de rien avec AngularJS et Firebase Partie 8

Dans la partie précédente de cette série de didacticiels, nous avons ajouté l'indicateur de chargement Ladda dans notre application pour le rendre plus interactif. Nous avons également vu comment filtrer le résultat des données lors de l'extraction de données à partir de firebase. Dans cette partie du didacticiel, nous allons ajouter la fonctionnalité de déconnexion et résoudre quelques problèmes..

Commencer

Commençons par cloner la partie précédente du tutoriel de GitHub.

clone de git https://github.com/jay3dec/AngularJS_Firebase_Part7.git

Après avoir cloné le code source, accédez au répertoire du projet et installez les dépendances requises..

cd AngularJS_Firebase_Part7 npm installer

Une fois les dépendances installées, démarrez le serveur.

npm start

Pointez votre navigateur sur http: // localhost: 8000 / app / # / home et vous devriez avoir l'application en cours d'exécution.

Implémentation de la fonctionnalité de déconnexion

Ajout du bouton de déconnexion

Nous allons commencer par ajouter le bouton de déconnexion à la addPost.html et bienvenue.html vues. Ouvrez les deux pages et ajoutez une nouvelle balise d'ancrage à l'élément nav. 

Mise en œuvre de la déconnexion

Lorsque nous voulons déconnecter un utilisateur particulier, nous pouvons appeler le $ unauth API firebase. Nous allons créer une méthode dans notre CommonProp Service AngularJS afin qu’il soit disponible sur tous les contrôleurs. Ouvrir home.js et modifier le CommonProp service pour inclure une nouvelle fonction appelée logoutUser.

logoutUser: function () // déconnecter l'utilisateur

Maintenant dans le logoutUser fonction, utilisez le loginObj pour faire le $ unauth Appel API et redirection vers la page d'accueil. Voici le modifié CommonProp un service.

.service ('CommonProp', ['$ location', '$ firebaseAuth', fonction ($ location, $ firebaseAuth) var utilisateur = "; var firebaseObj = nouvelle Firebase (" https: //blistering-heat-2473.firebaseio. com "); var loginObj = $ firebaseAuth (firebaseObj); return getUser: function () utilisateur de retour;, setUser: fonction (valeur) utilisateur = valeur;, logoutUser: fonction () loginObj. $ unauth ( ); console.log ('done logout'); $ location.path ('/ home');;])

dans le AddPostCtrl et BienvenueCtrl contrôleurs, ajoutez une fonction appelée Connectez - Out qui fera l'appel de déconnexion à la CommonProp un service.

$ scope.logout = function () CommonProp.logoutUser (); 

Enregistrez les modifications ci-dessus et connectez-vous à l'aide d'une adresse e-mail et d'un mot de passe valides. Une fois connecté, vous devriez pouvoir voir le Connectez - Out lien dans le menu du haut. En cliquant sur le Connectez - Out lien devrait vous déconnecter de l'application.

Maintenance des données de page lors de l'actualisation

Jusqu'à présent, tout va bien et fonctionne bien. Mais après vous être connecté à l'application, si vous essayez d'actualiser la page, tout est brouillé. Nous devons donc trouver un moyen de conserver les données de la page. Nous utiliserons le stockage local HTML 5 pour gérer les données importantes. 

Une fois que l'utilisateur s'est connecté avec succès, nous conservons l'adresse électronique dans la mémoire de stockage locale. Modifier le setUser fonctionner dans le CommonProp service pour stocker l'adresse email de l'utilisateur dans le stockage local.

setUser: function (valeur) localStorage.setItem ("userEmail", valeur); utilisateur = valeur; 

Maintenant, tout en obtenant l'adresse électronique de l'utilisateur du CommonProp service, il va chercher l'adresse e-mail à partir de la mémoire locale et le retour.

getUser: function () if (utilisateur == ") utilisateur = localStorage.getItem ('userEmail'); utilisateur de retour;

Veillez également à supprimer les données de stockage locales et la variable utilisateur du CommonProp service lorsque l'utilisateur se déconnecte.

logoutUser: function () loginObj. $ unauth (); user = "; localStorage.removeItem ('userEmail'); $ location.path ('/ home');

Enregistrez les modifications ci-dessus et connectez-vous à l'aide d'une adresse e-mail et d'un mot de passe valides. Une fois connecté, essayez d'actualiser la page et la page devrait fonctionner comme prévu.

Empêcher l'accès aux pages non autorisées

À l'heure actuelle, les utilisateurs peuvent accéder à toutes les pages, qu'ils soient connectés ou non. Afin de prévenir les accès non autorisés, nous allons vérifier la session de l'utilisateur.

dans le BienvenueCtrl contrôleur, ajoutez le code suivant pour obtenir l’utilisateur actuellement connecté. Si l'utilisateur n'existe pas, redirigez l'utilisateur vers la page d'accueil.

$ scope.username = CommonProp.getUser (); if (! $ scope.username) $ location.path ('/ home'); 

De même, ajoutez le code suivant en vérifiant le AddPostCtrl manette.

if (! CommonProp.getUser ()) $ location.path ('/ home'); 

Enregistrez les modifications ci-dessus et essayez de charger la page d'accueil ou la page Ajouter un message sans vous connecter. Vous devriez être redirigé vers la page de connexion.. 

Connexion automatique de l'utilisateur sur une session valide

Nous ajouterons une fonctionnalité supplémentaire pour vous connecter automatiquement à l'utilisateur sur la page de connexion. Nous allons utiliser le $ onAuth API qui écoute les modifications de l'état d'authentification. Lorsque l'utilisateur charge la page de connexion et qu'un état d'authentification se produit en raison d'une session valide, $ onAuth sera renvoyé. Ajouter le $ onAuth Appel API dans le HomeCtrl manette.

loginObj. $ onAuth (function (authData) // déclenche lorsque l'état d'authentification se produit);

Si la authData n'est pas null dans le rappel retourné, c'est une session valide. Alors, ajoutez le code pour enregistrer les détails de l'utilisateur dans le service CommonProp et rediriger vers la page d'accueil.

loginObj. $ onAuth (function (authData) if (authData) CommonProp.setUser (authData.password.email); $ location.path ('/ bienvenue'));

Enregistrez les modifications ci-dessus et connectez-vous à l'application. Une fois connecté, fermez l'application sans vous déconnecter. Maintenant, essayez de charger la page de connexion et vous devriez être automatiquement connecté à l'application.

Envelopper

Dans cette partie de la série, nous avons implémenté la fonctionnalité de déconnexion et résolu certains problèmes tels que la prévention de l'accès des utilisateurs non autorisés et la conservation des données lors de l'actualisation de la page.. 

Dans les prochains tutoriels, je vais essayer d'implémenter quelques fonctionnalités demandées par les utilisateurs. J'accueille toutes les demandes de fonctionnalités que vous souhaitez que je mette en œuvre..

Surveillez le prochain tutoriel en consultant ma page d'instructeur. Il comprend tous les tutoriels dès leur publication.

Faites-nous savoir vos pensées, suggestions et corrections dans les commentaires ci-dessous. Le code source de ce tutoriel est disponible sur GitHub.