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:
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:
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:
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 ?