W
Whiplash
hola buenas a todos/as quisiera que me ayudasen a encontrar una solucion o una variante a la problematica que tengo. el problema es el siguiente: tengo un proyecto en angular ionic, la cual quiero realizar un gestor de usuarios y actualmente tengo lo que seria el registro de ususarios y listado de estos, pero al momento de realizar el eliminar usuario del firebase, no me deja eliminar porque en la consola me dice que no se a encontrado el usuario por el UID de este, pero he estado analizando el codigo que segun yo esta bien y no se me ocurre otra solucion aqui le dejo la informacion de los codigos
authService (servicio para gestion de las cuentas):
codigo del gestor de usuario y funcion de listado y eliminacion del usuario:
**
**
aquí les dejo la información de la acción de eliminar:
authService (servicio para gestion de las cuentas):
Code:
**import { Injectable } from '@angular/core';
import { AngularFireAuth } from '@angular/fire/compat/auth';
import { AngularFirestore } from '@angular/fire/compat/firestore';
import { Empleado, Usuario } from './modelUser';
import { Router } from '@angular/router';
@Injectable({
providedIn: 'root'
})
export class AuthService {
constructor(
private afAuth: AngularFireAuth,
private firestore: AngularFirestore,
private router: Router
) { }
async registrar(usuario: Usuario) {
try {
const credential = await this.afAuth.createUserWithEmailAndPassword(usuario.correo, usuario.password);
const uid = credential.user?.uid;
if (uid) {
await this.firestore.collection('Usuarios').doc(uid).set(usuario);
} else {
throw new Error('No se pudo obtener el UID del usuario.');
}
} catch (error: any) {
throw new Error('Error al registrar usuario: ' + error.message);
}
}
async registrarByAdmin(empleado: Empleado) {
try {
const credential = await this.afAuth.createUserWithEmailAndPassword(empleado.correo, empleado.password);
const uid = credential.user?.uid;
if (uid) {
await this.firestore.collection('Empleados').doc(uid).set(empleado);
} else {
throw new Error('No se pudo obtener el UID del empleado.');
}
} catch (error: any) {
throw new Error('Error al registrar empleado: ' + error.message);
}
}
async getEmpleados(): Promise<Empleado[]> {
try {
const snapshot = await this.firestore.collection('Empleados').get().toPromise();
if (snapshot) {
return snapshot.docs.map(doc => doc.data() as Empleado);
} else {
throw new Error('No se encontraron documentos en la colección Empleados.');
}
} catch (error: any) {
throw new Error('Error al obtener la lista de empleados: ' + error.message);
}
}
async ingresar(email: string, password: string) {
try {
await this.afAuth.signInWithEmailAndPassword(email, password);
this.router.navigate(['/perfil']);
} catch (error: any) {
console.error('Error al iniciar sesión:', error);
throw new Error('Error al iniciar sesión: ' + error.message);
}
}
async cerrarSesion() {
try {
await this.afAuth.signOut();
this.router.navigate(['/']);
} catch (error: any) {
console.error('Error al cerrar sesión:', error);
throw new Error('Error al cerrar sesión: ' + error.message);
}
}
modificarUsuario() {
}
async eliminarUsuario(uid: string): Promise<void> {
try {
const user = await this.afAuth.currentUser;
if (user) {
await user.delete();
} else {
throw new Error('No se encontró el usuario para eliminar.');
}
await this.firestore.collection('Usuarios').doc(uid).delete();
this.router.navigate(['/']);
} catch (error: any) {
console.error('Error al eliminar usuario:', error);
throw new Error('Error al eliminar usuario: ' + error.message);
}
}
async getUid(){
const user = await this.afAuth.currentUser;
if (user === null){
return null;
} else {
return user?.uid;
}
}
getCurrentUser() {
return this.afAuth.currentUser.then(user => {
if (user !== null) {
return user;
} else {
return null;
}
}).catch(error => {
console.error('Error al obtener el usuario actual:', error);
throw new Error('Error al obtener el usuario actual: ' + error.message);
});
}
// selecciona al usuario unico
async getUsuarioID(uid: string): Promise<Usuario> {
try {
const docRef = this.firestore.collection('Usuarios').doc(uid);
const doc = await docRef.get().toPromise();
if (doc && doc.exists) {
return doc.data() as Usuario;
} else {
throw new Error('No se encontró la información del usuario.');
}
} catch (error: any) {
throw new Error('Error al obtener la información del usuario: ' + error.message);
}
}
// muestra a todos los usuarios en una lista
async getUsuarios(): Promise<Usuario[]> {
try {
const snapshot = await this.firestore.collection('Usuarios').get().toPromise();
if (snapshot) {
return snapshot.docs.map(doc => doc.data() as Usuario);
} else {
throw new Error('No se encontraron documentos en la colección Usuarios.');
}
} catch (error: any) {
throw new Error('Error al obtener la lista de usuarios: ' + error.message);
}
}
stateAuth(){
return this.afAuth.authState;
}
}**
codigo del gestor de usuario y funcion de listado y eliminacion del usuario:
**
Code:
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { ToastController } from '@ionic/angular';
import { AuthService } from 'src/app/models-srvcs/auth.service';
import { CacheService } from 'src/app/models-srvcs/cache.service';
import { Usuario } from 'src/app/models-srvcs/modelUser';
@Component({
selector: 'app-gestioncli',
templateUrl: './gestioncli.component.html',
styleUrls: ['./gestioncli.component.scss'],
})
export class GestioncliComponent implements OnInit {
usuarios: Usuario[] = [];
constructor(
private authService: AuthService,
private toastController: ToastController,
private router: Router,
private cacheService: CacheService
) {}
ngOnInit() {
this.getUsuarios();
}
navigateToPage(page: string) {
this.router.navigate([page]);
}
async getUsuarios() {
try {
this.usuarios = this.cacheService.getUsuarios();
if (this.usuarios.length === 0) {
this.usuarios = await this.authService.getUsuarios();
this.cacheService.setUsuarios(this.usuarios);
}
} catch (error) {
console.error('Error al obtener usuarios:', error);
}
}
async eliminarCli(uid: string) {
try {
await this.authService.eliminarUsuario(uid);
await this.mostrarMensaje('Cliente eliminado exitosamente.');
await this.getUsuarios();
} catch (error) {
console.error('Error al eliminar cliente:', error);
await this.mostrarMensaje('Error al eliminar cliente.');
}
}
modificarCli(){
}
async mostrarMensaje(mensaje: string) {
const toast = await this.toastController.create({
message: mensaje,
duration: 2000,
position: 'top',
});
toast.present();
}
}
**
aquí les dejo la información de la acción de eliminar: