prasi-lib/preset/login/utils/generate.ts

76 lines
2.1 KiB
TypeScript
Executable File

import get from "lodash.get";
import { select } from "./select";
type typeFieldLogin = {
username: string;
password: string;
};
export const generateLogin = async (
item: PrasiItem,
rel: any,
field: typeFieldLogin
) => {
console.log({ item, rel, coba: item.edit.childs[0].edit.childs[0] });
const item_form: any = get(
item,
"edit.childs[0].edit.childs[0].edit.props.body.value"
);
const form: PrasiItem = item_form;
const filterField = form.edit.childs.filter(
(e: any) =>
get(e, "component.id") !== "32550d01-42a3-4b15-a04a-2c2d5c3c8e67"
);
form.edit.childs[0].edit.setProp("name", field.username)
// form.edit.childs[1].edit.setProp("name", field.password)
let rels = { ...rel };
try {
delete rels[field.password];
} catch (e) {}
const field_select = select(rels);
item.edit.childs[0].edit.childs[0].edit.setProp("on_submit", {
mode: "raw",
value: `\
async ({ form, error }: IForm) => {
const user = await db.m_user.findFirst({
where: {
username: form.${field.username},
},
select: {
id: true,
${field.username}: true,
${field.password}: true
}
});
if(user){
const same = await password.match(form.${field.password}, user.${
field.password
});
if(same){
const data_user = await db.m_user.findFirst({
where: {
${field.username}: form.${field.username}
},
select: ${JSON.stringify(field_select)}
});
if (data_user) {
registerSession({ data: data_user, expired: null });
const w = window as any;
const home = w.prasi_home[w.user.m_role.name];
navigate(home);
}
}else{
alert("password salah");
}
}else{
alert("user belum terdaftar")
}
};
type IForm = { form: any; error: Record<string, string> }
`,
});
await item.edit.commit();
};