# Almacén Auth
# interface Credentials
interface Credentials {
email?: string | undefined;
password?: string | undefined;
provider?: "bitbucket" | "github" | "gitlab" | "google" | undefined;
}
# Actions
actions: {
// Iniciar Sesión
async handleLogin(credentials: Credentials) {
try {
const { error, user } = await supabase.auth.signIn({
email: credentials.email,
password: credentials.password,
});
if (error) {
alert("Ha ocurrido un error de acceso: " + error.message);
}
// No detecta error, pero no detecta el usuario y envía un enlace al correo
if (!error && !user) {
alert("¡Revisa tu correo pincha en el enlace!");
}
} catch (error: any) {
console.error("Error detectado:", error.message);
alert(error.error_description || error);
}
},
// Registra un nuevo usuario y envía un email para la activación
async handleSignup(credentials: Credentials) {
try {
const { email, password } = credentials;
// Avisa al usuario si no ha rellenado sus credenciales
if (!email || !password) {
alert("Por favor introduce el correo y la contraseña.");
return;
}
const { error } = await supabase.auth.signUp({ email, password });
if (error) {
alert(error.message);
console.error(error, error.message);
return;
}
alert("Registro comprobado, se enviará un email para la activación");
} catch (err) {
alert("¡Lo sentimos ha ocurrido un error de inicio!");
console.error("Error de singin", err);
}
},
// Registra usuarios de terceros Github, Google...
async handleOAuthLogin(provider: Provider) {
const { error } = await supabase.auth.signIn({ provider });
if (error) console.error("Error: ", error.message);
},
// Recupera/Actualiza la contraseña de un usuario
async handlePasswordReset() {
const email = prompt("Por favor introduce tu correo:");
if (!email) {
window.alert("Se necesita el correo electrónico.");
} else {
const { error } = await supabase.auth.api.resetPasswordForEmail(email);
if (error) {
alert("Error: " + error.message);
} else {
alert("Se enviará un correo para restablecer la contraseña.");
}
}
},
// Actualiza la contraseña del usuario
async handleUpdateUser(credentials: Credentials) {
try {
const { error } = await supabase.auth.update(credentials);
if (error) {
alert("Ha ocurrido un error al actualizar la información del usuario: " + error.message);
} else {
alert("¡Se ha actualizado la información del usuario!");
window.location.href = "/";
}
} catch (error: any) {
alert("Ha ocurrido un error actualizando la información del usuario: " + error.message);
}
},
// Finaliza la sesión del usuario
async handleLogout() {
console.log("Saliendo");
try {
const { error } = await supabase.auth.signOut();
if (error) {
alert("Ha ocurrido un error al salir de la sesión");
console.error("Error", error);
return;
}
alert("¡Has salido de la sesión!");
} catch (error) {
alert("Error desconocido al salir de la sesión");
console.error("Error", error);
}
},
}