diff --git a/resources/js/components/CreateAkun.vue b/resources/js/components/CreateAkun.vue index 3876180..0cd144b 100644 --- a/resources/js/components/CreateAkun.vue +++ b/resources/js/components/CreateAkun.vue @@ -7,33 +7,45 @@
- +{{ errorMessage }}
@@ -72,25 +84,65 @@ export default { data() { return { form: { nama: "", password: "", role: "" }, + errors: { nama: "", password: "", role: "" }, errorMessage: "", }; }, methods: { + clearError(field) { + this.errors[field] = ""; + this.errorMessage = ""; + }, + validateForm() { + let valid = true; + this.errors = { nama: "", password: "", role: "" }; + + if (!this.form.nama) { + this.errors.nama = "Nama wajib diisi"; + valid = false; + } + if (!this.form.password) { + this.errors.password = "Password wajib diisi"; + valid = false; + } else if (this.form.password.length < 6) { + this.errors.password = "Password minimal 6 karakter"; + valid = false; + } + if (!this.form.role) { + this.errors.role = "Role wajib dipilih"; + valid = false; + } else if (!["owner", "kasir"].includes(this.form.role)) { + this.errors.role = "Role harus owner atau kasir"; + valid = false; + } + + return valid; + }, async createAkun() { + if (!this.validateForm()) return; + try { - await axios.post("api/user", this.form, { + await axios.post("/api/user", this.form, { headers: { - Authorization: `Bearer ${localStorage.getItem( - "token" - )}`, + Authorization: `Bearer ${localStorage.getItem("token")}`, }, }); + + // reset form this.form = { nama: "", password: "", role: "" }; this.$emit("refresh"); this.$emit("close"); } catch (err) { - this.errorMessage = - err.response?.data?.message || "Gagal menambah akun."; + if (err.response?.status === 422 && err.response.data.errors) { + // tampilkan error validasi backend + const backendErrors = err.response.data.errors; + Object.keys(backendErrors).forEach((key) => { + this.errors[key] = backendErrors[key][0]; + }); + } else { + this.errorMessage = + err.response?.data?.message || "Gagal menambah akun."; + } console.error("Gagal tambah akun:", err); } }, diff --git a/resources/js/components/EditAkun.vue b/resources/js/components/EditAkun.vue index 3007cd0..9730213 100644 --- a/resources/js/components/EditAkun.vue +++ b/resources/js/components/EditAkun.vue @@ -1,118 +1,174 @@ -+ {{ errorMessage }} +