Explicación: Firebase
Completion requirements
3. Crear AuthService (login/registro)
Activa Email/Password en Firebase


Crea esta ruta: src/app/core/auth/
Crear auth.service.ts: src/app/core/auth/auth.service.ts
import { Injectable, signal, computed } from '@angular/core';
import {
getAuth,
onAuthStateChanged,
createUserWithEmailAndPassword,
signInWithEmailAndPassword,
signOut,
User,
} from 'firebase/auth';
@Injectable({ providedIn: 'root' })
export class AuthService {
private auth = getAuth();
// Estado (Angular signals)
user = signal<User | null>(null);
loading = signal(true);
// Helpers
isLoggedIn = computed(() => !!this.user());
constructor() {
// Escucha cambios de sesión (persistencia incluida por Firebase)
onAuthStateChanged(this.auth, (u) => {
this.user.set(u);
this.loading.set(false);
});
}
// Registro
register(email: string, password: string) {
return createUserWithEmailAndPassword(this.auth, email, password);
}
// Login
login(email: string, password: string) {
return signInWithEmailAndPassword(this.auth, email, password);
}
// Logout
logout() {
return signOut(this.auth);
}
// JWT (ID Token) para tu backend (Spring/FastAPI)
async getIdToken(): Promise<string | null> {
const u = this.auth.currentUser;
if (!u) return null;
return u.getIdToken(); // JWT
}
}