En aquest tema, aprendrem com gestionar els usuaris en una aplicació que utilitza Firebase per a l'autenticació. La gestió d'usuaris inclou operacions com la creació, actualització, eliminació i recuperació d'informació dels usuaris. També veurem com gestionar la sessió d'usuari i com implementar la recuperació de contrasenyes.
Continguts
Creació d'usuaris
Per crear un nou usuari amb correu electrònic i contrasenya, utilitzem el mètode createUserWithEmailAndPassword
de Firebase Authentication. Aquest mètode crea un nou compte d'usuari associat amb l'adreça de correu electrònic i la contrasenya proporcionades.
Exemple de codi
firebase.auth().createUserWithEmailAndPassword(email, password) .then((userCredential) => { // Usuari creat correctament var user = userCredential.user; console.log("Usuari creat:", user); }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; console.error("Error en crear l'usuari:", errorCode, errorMessage); });
Explicació
firebase.auth().createUserWithEmailAndPassword(email, password)
: Aquest mètode crea un nou usuari amb l'adreça de correu electrònic i la contrasenya proporcionades.then((userCredential) => { ... })
: Si la creació de l'usuari és exitosa, es retorna un objecteuserCredential
que conté informació sobre l'usuari creat.catch((error) => { ... })
: Si hi ha un error durant la creació de l'usuari, es captura i es mostra el codi i el missatge d'error.
Actualització del perfil d'usuari
Després de crear un usuari, podem actualitzar el seu perfil, com ara el nom d'usuari i la foto de perfil.
Exemple de codi
var user = firebase.auth().currentUser; user.updateProfile({ displayName: "Nom d'usuari", photoURL: "https://example.com/foto-de-perfil.jpg" }).then(() => { // Actualització correcta console.log("Perfil actualitzat correctament"); }).catch((error) => { // Error en actualitzar el perfil console.error("Error en actualitzar el perfil:", error); });
Explicació
firebase.auth().currentUser
: Obtenim l'usuari actualment autenticat.user.updateProfile({ ... })
: Actualitzem el perfil de l'usuari amb el nom d'usuari i la foto de perfil proporcionats.then(() => { ... })
: Si l'actualització és exitosa, es mostra un missatge de confirmació.catch((error) => { ... })
: Si hi ha un error durant l'actualització, es captura i es mostra el missatge d'error.
Eliminació d'usuaris
Per eliminar un usuari, utilitzem el mètode delete
de l'objecte User
.
Exemple de codi
var user = firebase.auth().currentUser; user.delete().then(() => { // Usuari eliminat correctament console.log("Usuari eliminat correctament"); }).catch((error) => { // Error en eliminar l'usuari console.error("Error en eliminar l'usuari:", error); });
Explicació
firebase.auth().currentUser
: Obtenim l'usuari actualment autenticat.user.delete()
: Elimina l'usuari actualment autenticat.then(() => { ... })
: Si l'eliminació és exitosa, es mostra un missatge de confirmació.catch((error) => { ... })
: Si hi ha un error durant l'eliminació, es captura i es mostra el missatge d'error.
Recuperació de contrasenyes
Firebase proporciona una manera senzilla de permetre als usuaris recuperar les seves contrasenyes mitjançant el mètode sendPasswordResetEmail
.
Exemple de codi
var auth = firebase.auth(); var emailAddress = "[email protected]"; auth.sendPasswordResetEmail(emailAddress).then(() => { // Correu de recuperació enviat correctament console.log("Correu de recuperació enviat"); }).catch((error) => { // Error en enviar el correu de recuperació console.error("Error en enviar el correu de recuperació:", error); });
Explicació
firebase.auth()
: Obtenim l'objecte d'autenticació de Firebase.auth.sendPasswordResetEmail(emailAddress)
: Enviem un correu de recuperació de contrasenya a l'adreça de correu electrònic proporcionada.then(() => { ... })
: Si l'enviament és exitós, es mostra un missatge de confirmació.catch((error) => { ... })
: Si hi ha un error durant l'enviament, es captura i es mostra el missatge d'error.
Gestió de la sessió d'usuari
És important gestionar la sessió d'usuari per assegurar-se que l'usuari estigui autenticat abans de permetre-li accedir a certes parts de l'aplicació.
Exemple de codi
firebase.auth().onAuthStateChanged((user) => { if (user) { // Usuari autenticat console.log("Usuari autenticat:", user); } else { // Usuari no autenticat console.log("Usuari no autenticat"); } });
Explicació
firebase.auth().onAuthStateChanged((user) => { ... })
: Aquest mètode s'executa cada vegada que l'estat d'autenticació de l'usuari canvia.if (user) { ... } else { ... }
: Si l'usuari està autenticat, es mostra la informació de l'usuari. Si no, es mostra un missatge indicant que l'usuari no està autenticat.
Exercicis pràctics
Exercici 1: Crear un nou usuari
Crea un formulari que permeti als usuaris registrar-se amb el seu correu electrònic i contrasenya. Implementa la funcionalitat per crear un nou usuari utilitzant Firebase Authentication.
Exercici 2: Actualitzar el perfil d'usuari
Afegeix funcionalitat al teu formulari per permetre als usuaris actualitzar el seu nom d'usuari i foto de perfil.
Exercici 3: Recuperació de contrasenyes
Implementa una funcionalitat que permeti als usuaris recuperar la seva contrasenya mitjançant un correu de recuperació.
Solucions
Solució a l'Exercici 1
document.getElementById("registerForm").addEventListener("submit", (event) => { event.preventDefault(); var email = document.getElementById("email").value; var password = document.getElementById("password").value; firebase.auth().createUserWithEmailAndPassword(email, password) .then((userCredential) => { var user = userCredential.user; console.log("Usuari creat:", user); }) .catch((error) => { console.error("Error en crear l'usuari:", error.code, error.message); }); });
Solució a l'Exercici 2
document.getElementById("updateProfileForm").addEventListener("submit", (event) => { event.preventDefault(); var displayName = document.getElementById("displayName").value; var photoURL = document.getElementById("photoURL").value; var user = firebase.auth().currentUser; user.updateProfile({ displayName: displayName, photoURL: photoURL }).then(() => { console.log("Perfil actualitzat correctament"); }).catch((error) => { console.error("Error en actualitzar el perfil:", error); }); });
Solució a l'Exercici 3
document.getElementById("resetPasswordForm").addEventListener("submit", (event) => { event.preventDefault(); var emailAddress = document.getElementById("email").value; firebase.auth().sendPasswordResetEmail(emailAddress).then(() => { console.log("Correu de recuperació enviat"); }).catch((error) => { console.error("Error en enviar el correu de recuperació:", error); }); });
Conclusió
En aquest tema, hem après com gestionar els usuaris en una aplicació que utilitza Firebase per a l'autenticació. Hem vist com crear, actualitzar, eliminar usuaris i com gestionar la sessió d'usuari. També hem après a implementar la funcionalitat de recuperació de contrasenyes. Aquests conceptes són fonamentals per a la gestió d'usuaris en qualsevol aplicació moderna. En el següent tema, explorarem la base de dades en temps real de Firebase.
Curs de Firebase
Mòdul 1: Introducció a Firebase
Mòdul 2: Autenticació de Firebase
- Introducció a l'autenticació de Firebase
- Autenticació amb correu electrònic i contrasenya
- Autenticació amb xarxes socials
- Gestió d'usuaris
Mòdul 3: Base de dades en temps real de Firebase
- Introducció a la base de dades en temps real
- Lectura i escriptura de dades
- Estructura de dades i regles de seguretat
- Capacitats fora de línia
Mòdul 4: Cloud Firestore
- Introducció a Cloud Firestore
- Model de dades de Firestore
- Operacions CRUD
- Consultes avançades
- Regles de seguretat
Mòdul 5: Emmagatzematge de Firebase
- Introducció a l'emmagatzematge de Firebase
- Carregar fitxers
- Descarregar fitxers
- Metadades de fitxers i seguretat
Mòdul 6: Missatgeria en el núvol de Firebase
- Introducció a la missatgeria en el núvol
- Enviar notificacions
- Gestionar notificacions
- Funcions avançades de missatgeria
Mòdul 7: Analítica de Firebase
Mòdul 8: Funcions de Firebase
Mòdul 9: Monitoratge del rendiment de Firebase
- Introducció al monitoratge del rendiment
- Configuració del monitoratge del rendiment
- Analitzar dades de rendiment