Files
Basdat/web/js/pages/auth/useLoginHandlers.js
T

52 lines
1.2 KiB
JavaScript

// assets/js/pages/auth/useLoginHandlers.js
const useLoginHandlers = (state) => {
const { setErrors, setLoading, setToast } = state;
const showToast = (message, type = "info") => {
setToast({ message, type });
};
const handleSubmit = async (e, email, password) => {
e.preventDefault();
setErrors({});
let newErrors = {};
if (!Helpers.validateEmail(email)) {
newErrors.email = "Email tidak valid";
}
if (password.length < 6) {
newErrors.password = "Password minimal 6 karakter";
}
if (Object.keys(newErrors).length > 0) {
setErrors(newErrors);
return;
}
setLoading(true);
try {
const data = await ApiUtils.post(CONFIG.API_ENDPOINTS.LOGIN, {
email,
password,
});
AuthUtils.setToken(data.data.token);
AuthUtils.setCurrentUser(data.data.user);
showToast("Login berhasil! Mengalihkan...", "success");
setTimeout(() => {
AuthUtils.redirectBasedOnRole(data.data.user);
}, 500);
} catch (error) {
showToast(error.message || "Email atau password salah!", "error");
} finally {
setLoading(false);
}
};
return { handleSubmit };
};