summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-01-15 13:40:59 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-01-15 13:40:59 +0700
commit9c4951174cf6cf5c15b0b2a808d5d14befac6169 (patch)
tree5989901aa7ac2e665033ace68097f03a5f13e177
parent1d473242c70cd50fa6111c987ec91b2240febf2a (diff)
<iman> update code filter bad words registrasi
-rw-r--r--src-migrate/validations/auth.ts151
-rw-r--r--src/lib/form/components/KunjunganSales.jsx2
-rw-r--r--src/lib/form/components/KunjunganService.jsx2
-rw-r--r--src/lib/form/components/Merchant.jsx2
-rw-r--r--src/lib/form/components/RequestForQuotation.jsx2
5 files changed, 130 insertions, 29 deletions
diff --git a/src-migrate/validations/auth.ts b/src-migrate/validations/auth.ts
index 8e867ade..cf88011d 100644
--- a/src-migrate/validations/auth.ts
+++ b/src-migrate/validations/auth.ts
@@ -1,12 +1,49 @@
import { z } from 'zod';
-
+const forbiddenWords = [
+ 'anjing',
+ 'babi',
+ 'monyet',
+ 'bangsat',
+ ' tai ',
+ 'kontol',
+ 'memek',
+ 'bol',
+ 'pantat',
+ 'jembut',
+ 'mencret',
+ 'ngehe',
+ 'ngewe',
+ 'ngentot',
+ 'ngews',
+ 'jembudh',
+ 'jembud',
+ 'b4b1',
+ 'b4bi',
+ 'bab1',
+];
export const registerSchema = z
.object({
- name: z.string().min(1, { message: 'Nama harus diisi' }),
+ name: z
+ .string()
+ .min(1, { message: 'Nama harus diisi' })
+ .refine(
+ (value) =>
+ !forbiddenWords.some((word) => value.toLowerCase().includes(word)),
+ {
+ message: 'Nama mengandung kata yang tidak diperbolehkan',
+ }
+ ),
email: z
.string()
.min(1, { message: 'Email harus diisi' })
- .email({ message: 'Email harus menggunakan format example@mail.com' }),
+ .email({ message: 'Email harus menggunakan format example@mail.com' })
+ .refine(
+ (value) =>
+ !forbiddenWords.some((word) => value.toLowerCase().includes(word)),
+ {
+ message: 'Nama mengandung kata yang tidak diperbolehkan',
+ }
+ ),
password: z.string().min(6, { message: 'Password minimal 6 karakter' }),
phone: z
.string()
@@ -15,37 +52,99 @@ export const registerSchema = z
message: 'Format nomor telepon tidak valid, contoh: 081234567890',
}),
type_acc: z.string().optional(),
- nama_wajib_pajak: z.string().optional(),
- alamat_bisnis: z.string().optional(),
- alamat_wajib_pajak: z.string().optional(),
+ nama_wajib_pajak: z
+ .string()
+ .refine(
+ (value) =>
+ !forbiddenWords.some((word) => value.toLowerCase().includes(word)),
+ {
+ message: 'Nama mengandung kata yang tidak diperbolehkan',
+ }
+ )
+ .optional(),
+ alamat_bisnis: z
+ .string()
+ .refine(
+ (value) =>
+ !forbiddenWords.some((word) => value.toLowerCase().includes(word)),
+ {
+ message: 'Nama mengandung kata yang tidak diperbolehkan',
+ }
+ )
+ .optional(),
+ alamat_wajib_pajak: z
+ .string()
+ .refine(
+ (value) =>
+ !forbiddenWords.some((word) => value.toLowerCase().includes(word)),
+ {
+ message: 'Nama mengandung kata yang tidak diperbolehkan',
+ }
+ )
+ .optional(),
is_pkp: z.string(),
is_terdaftar: z.string(),
sppkp_document: z.string().optional(),
npwp_document: z.string().optional(),
industry_id: z.string().optional(),
- email_partner: z.string().optional(),
- business_name: z.string().optional(),
+ email_partner: z
+ .string()
+ .refine(
+ (value) =>
+ !forbiddenWords.some((word) => value.toLowerCase().includes(word)),
+ {
+ message: 'Nama mengandung kata yang tidak diperbolehkan',
+ }
+ )
+ .optional(),
+ business_name: z
+ .string()
+ .refine(
+ (value) =>
+ !forbiddenWords.some((word) => value.toLowerCase().includes(word)),
+ {
+ message: 'Nama mengandung kata yang tidak diperbolehkan',
+ }
+ )
+ .optional(),
company_type_id: z.string().optional(),
isChekBox: z.string().optional(),
- npwp: z.string().optional().refine((val) => !val || /^\d{15,16}$/.test(val), {
- message: 'Format NPWP tidak valid, NPWP harus terdiri dari 15-16 digit angka.',
- }),
+ npwp: z
+ .string()
+ .optional()
+ .refine((val) => !val || /^\d{15,16}$/.test(val), {
+ message:
+ 'Format NPWP tidak valid, NPWP harus terdiri dari 15-16 digit angka.',
+ }),
sppkp: z.string().optional(),
})
.superRefine((data, ctx) => {
if (data.type_acc === 'business') {
if (data.is_terdaftar === 'false') {
if (data.is_pkp === 'true') {
- const requiredFields: { field: keyof typeof data; message: string }[] = [
+ const requiredFields: {
+ field: keyof typeof data;
+ message: string;
+ }[] = [
{ field: 'business_name', message: 'Nama perusahaan harus diisi' },
- { field: 'alamat_bisnis', message: 'Alamat perusahaan harus diisi' },
+ {
+ field: 'alamat_bisnis',
+ message: 'Alamat perusahaan harus diisi',
+ },
// { field: 'alamat_wajib_pajak', message: 'Alamat wajib pajak harus diisi' },
{ field: 'company_type_id', message: 'Badan usaha wajib dipilih' },
{ field: 'industry_id', message: 'Jenis usaha harus dipilih' },
{ field: 'sppkp_document', message: 'Document harus diisi' },
{ field: 'npwp_document', message: 'Document harus diisi' },
- { field: 'npwp', message: 'Format NPWP tidak valid, NPWP harus terdiri dari 15-16 digit angka.' },
- { field: 'nama_wajib_pajak', message: 'Nama wajib pajak harus diisi' },
+ {
+ field: 'npwp',
+ message:
+ 'Format NPWP tidak valid, NPWP harus terdiri dari 15-16 digit angka.',
+ },
+ {
+ field: 'nama_wajib_pajak',
+ message: 'Nama wajib pajak harus diisi',
+ },
];
requiredFields.forEach(({ field, message }) => {
@@ -57,15 +156,19 @@ export const registerSchema = z
});
}
});
-
- if (!data.email_partner || !z.string().email().safeParse(data.email_partner).success) {
+
+ if (
+ !data.email_partner ||
+ !z.string().email().safeParse(data.email_partner).success
+ ) {
ctx.addIssue({
code: 'custom',
path: ['email_partner'],
- message: 'Email partner harus diisi dengan format example@mail.com',
+ message:
+ 'Email partner harus diisi dengan format example@mail.com',
});
}
- if(data.isChekBox === 'false'){
+ if (data.isChekBox === 'false') {
if (!data.alamat_wajib_pajak) {
ctx.addIssue({
code: 'custom',
@@ -74,7 +177,6 @@ export const registerSchema = z
});
}
}
-
} else {
if (!data.business_name) {
ctx.addIssue({
@@ -110,12 +212,12 @@ export const registerSchema = z
ctx.addIssue({
code: 'custom',
path: ['npwp'],
- message: 'Format NPWP tidak valid, NPWP harus terdiri dari 15-16 digit angka.',
+ message:
+ 'Format NPWP tidak valid, NPWP harus terdiri dari 15-16 digit angka.',
});
}
-
}
- }else{
+ } else {
if (data.is_pkp === 'true') {
if (!data.business_name) {
ctx.addIssue({
@@ -141,7 +243,6 @@ export const registerSchema = z
// path: ['business_name'],
// message: 'Nama perusahaan harus diisi',
// });
- }else{
-
+ } else {
}
});
diff --git a/src/lib/form/components/KunjunganSales.jsx b/src/lib/form/components/KunjunganSales.jsx
index 3779b836..0f63de03 100644
--- a/src/lib/form/components/KunjunganSales.jsx
+++ b/src/lib/form/components/KunjunganSales.jsx
@@ -42,7 +42,7 @@ const KunjunganSales = () => {
useEffect(() => {
const loadState = async () => {
- let dataState = await stateApi();
+ let dataState = await stateApi({ tempo: false });
dataState = dataState.map((state) => ({
value: state.id,
label: state.name,
diff --git a/src/lib/form/components/KunjunganService.jsx b/src/lib/form/components/KunjunganService.jsx
index e3c83f78..a3871054 100644
--- a/src/lib/form/components/KunjunganService.jsx
+++ b/src/lib/form/components/KunjunganService.jsx
@@ -41,7 +41,7 @@ const CreateKunjunganService = () => {
useEffect(() => {
const loadState = async () => {
- let dataState = await stateApi();
+ let dataState = await stateApi({ tempo: false });
dataState = dataState.map((state) => ({
value: state.id,
label: state.name,
diff --git a/src/lib/form/components/Merchant.jsx b/src/lib/form/components/Merchant.jsx
index ee7d177d..03b8fc84 100644
--- a/src/lib/form/components/Merchant.jsx
+++ b/src/lib/form/components/Merchant.jsx
@@ -65,7 +65,7 @@ const CreateMerchant = () => {
useEffect(() => {
const loadState = async () => {
- let dataState = await stateApi();
+ let dataState = await stateApi({ tempo: false });
dataState = dataState.map((state) => ({
value: state.id,
label: state.name,
diff --git a/src/lib/form/components/RequestForQuotation.jsx b/src/lib/form/components/RequestForQuotation.jsx
index 170a5c62..8861338f 100644
--- a/src/lib/form/components/RequestForQuotation.jsx
+++ b/src/lib/form/components/RequestForQuotation.jsx
@@ -42,7 +42,7 @@ const RequestForQuotation = () => {
useEffect(() => {
const loadState = async () => {
- let dataState = await stateApi();
+ let dataState = await stateApi({ tempo: false });
dataState = dataState.map((state) => ({
value: state.id,
label: state.name,