IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AngularJS Discussion :

Authentification avec Firebase


Sujet :

AngularJS

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Authentification avec Firebase
    Bonjour,

    Quelqu'un connait-il Firebase ?

    j'ai un problème, j'ai ajouté des droits en lecture et écriture sur mon modèle de données VILLES pour un utilisateur identifié, dans le dashboard de Firebase comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      "rules": {
        "villes": {
           ".read": "auth != null && data.child('user_id').val() === auth.uid",
          ".write": "auth != null && newData.child('user_id').val() === auth.uid"
        },
         "users": {
                ".write": true,
                "$uid": {
                    ".read": "auth != null && auth.uid == $uid"
                }
            }
      }

    J'ai mon controleur d'identifaction qui marche bien et qui authentifie correctement les utilisateurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <!-- AUTHENTIFICATION PAR MOT DE PASSE -->
    			app.controller("AuthControllerPwd", ["$scope", "$firebaseAuth",
    				  function($scope, $firebaseAuth) {
    					var ref = new Firebase("https://blinding-heat-8502.firebaseio.com/");
    					$scope.authObj = $firebaseAuth(ref);
     
    					$scope.login = function() {
    					  $scope.authData = null;
    					  $scope.error = null;
     
    					  $scope.authObj.$authWithPassword({
    						  	email: $scope.email,
    							password: $scope.password
    						}).then(function(authData) {
    						  console.log("Logged in as:", authData.uid);
    						  $scope.message2 = "Logged in as:", authData.uid;
    						  $scope.log = authData.uid;
     
    						}).catch(function(error) {
    						  console.error("Authentication failed:", error);
    						  $scope.error = error;
    						});
    					};
    				  }
    			]);
    Mais lorsque je veux voir mes villes dans mon application, je ne vois rien s'afficher après le login, cela cache ou ne charge pas le modèles de données.

    Le reste de l'application est basé sur ce controleur principal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    app.controller('appCtrl', ['$scope','VillesService','$http', function ($scope,VillesService,$http) {
     
    	/* INITIALISATION DU FORMULAIRE */
    	$scope.newVille 		= {}; // Tout ce que l'on inscrit dans le formulaire est copié dans cet objet en temps réel.
    	$scope.newVille.photo 	= "img-app/ville.jpg" // Image de base d'une ville que l'on modifie après après telechargement et update dans l'objet newVille
     
    	/* INITIALISATION DES ONGLETS (ON CHOISIT QUEL ONGLET SERA VU EN PREMIER) */
    	$scope.etatOnglets 			= {static0:true,static1: false, static2: false};
     
    	/* CHARGEMENT DU MODELE DE DONNEES SUR FIREBASE ET LIAISON PERMANENTE TRI-DIRECTIONNELLE A LA BASE DE DONNEE EN TEMPS REEL !(3 way binding): */
    	$scope.villes 			= VillesService.getVilles(); // $scope.villes est affiché en temps réel dans la vue, c'est un tableau d'objets Json contenant des villes.
     
    	$scope.getInfos = function(){
     
    		return $scope.villes.length;
     
    	}
     
    	/* REINITIALISATION DU FORMULAIRE POUR CREER UNE NOUVELLE VILLE */
    	$scope.nouveau = function(){
    		$scope.newVille 		= {}; // Tout ce que l'on inscrit dans le formulaire est copié dans cet objet en temps réel.
    		$scope.newVille.photo 	= "img-app/ville.jpg"
    	}
     
    	/* AJOUT D'UNE VILLE ET ENREGISTREMENT EN BASE DE DONNEES FIREBASE : */
    	$scope.ajouterVille = function(){
    		VillesService.ajouterVille(angular.copy($scope.newVille));// transmets l'objet ville à la base de données firebase suite à un click sur enregistrer la ville...
    		$scope.infos = "La ville a été ajoutée en ligne à la base de données FIREBASE"
    	}
     
    	/* SUPPRESSION D'UNE VILLE */
    	$scope.supprimerVille = function(ville){
    		alert('Je préfère garder les données de démo, coquin !')
    		/* VillesService.supprimerVille(ville); */
    	}
     
    	/* EDITION DUNE VILLE */
    	$scope.editerVille = function(ville){
    		/* FOCUS SUR L ONGLET EDITION */
    		$scope.etatOnglets 		= {};
    		$scope.etatOnglets 		= {static1: false, static2: true}; // Permet de placer automatiquement lutilisateur sur l'onglet EDITER
     
    		/* POUR POUVOIR EDITER UN OBJET IL FAUT LE RECUPERER SUR FIREBASE CA DOIT ETRE UN OBJET FIREBASE , DU COUP ON UTILISE GETRECORD COMME INDIQUE DANS LA DOC: */
    		$scope.newVille  		=  $scope.villes.$getRecord(ville.$id); // Astuce permettant de charger l'objet ville directement dans le formulaire : super rapide, super simple !
    	}
     
    	/* VALIDATION DE L EDITION DUNE VILLE  */
    	$scope.validerEdition = function(){
    		VillesService.editerVille($scope.newVille);
    		$scope.infos = "La ville a été modifiée en ligne dans la base de données FIREBASE"
     
    	}
     
    	/* CHARGEMENT D UNE PHOTO SUR LE SERVEUR */
    	$scope.uploadFile = function(files) {
     
    		var fd = new FormData();
    			//Take the first selected file
    			fd.append("file", files[0]);
    			console.log(files[0].name);
    			var uploadUrl = "uploadTruc36.php";
    			$http.post(uploadUrl, fd, {
    				withCredentials: true,
    				headers: {'Content-Type': undefined },
    				transformRequest: angular.identity
    			}).success(function(data){ 
    				$scope.infoUpload="Fichier téléchargé sur le serveur "; 
    				$scope.newVille.photo="uploads/"+files[0].name; 
    				})
    				.error(function(data){
    					$scope.infoUpload="Echec du téléchargement sur le serveur";
    				});
     
    	};
     
     
     
    <!-- FIN DU CONTROLEUR	 -->
    }])
    Ai-je raté une étape ?
    Dernière modification par NoSmoking ; 01/02/2016 à 18h30. Motif: Suppression mot problème dans titre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Page d'authentification avec jsp
    Par taroudant dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 19/07/2006, 09h24
  2. prob d'authentification avec Java Script !!!!!
    Par King_T dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/05/2006, 19h18
  3. Réponses: 2
    Dernier message: 10/05/2006, 07h50
  4. Pas de fenètre d'authentification avec .htaccess
    Par damjal dans le forum Apache
    Réponses: 2
    Dernier message: 02/11/2005, 08h40
  5. [MySQL] mécanisme d'authentification avec BD
    Par lalyly dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/10/2005, 13h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo