You've already forked obsidian-visualiser
Migration to Nuxt v4 file structure and dependencies update
This commit is contained in:
8
app/schemas/login.ts
Normal file
8
app/schemas/login.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { z } from "zod";
|
||||
|
||||
export const schema = z.object({
|
||||
usernameOrEmail: z.string({ required_error: "Nom d'utilisateur ou email obligatoire" }),
|
||||
password: z.string({ required_error: "Mot de passe obligatoire" }),
|
||||
});
|
||||
|
||||
export type Login = z.infer<typeof schema>;
|
||||
16
app/schemas/project.ts
Normal file
16
app/schemas/project.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { z } from "zod";
|
||||
import { projectFilesTable } from "~/db/schema";
|
||||
|
||||
export const Project = z.array(z.object({
|
||||
id: z.string(),
|
||||
path: z.string(),
|
||||
title: z.string(),
|
||||
type: z.enum(projectFilesTable.type.enumValues),
|
||||
navigable: z.boolean(),
|
||||
private: z.boolean(),
|
||||
order: z.number().finite(),
|
||||
timestamp: z.string(),
|
||||
}));
|
||||
|
||||
export type ProjectType = z.infer<typeof Project>;
|
||||
export type ProjectItemType = ProjectType[number];
|
||||
56
app/schemas/registration.ts
Normal file
56
app/schemas/registration.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import { z } from "zod";
|
||||
|
||||
function securePassword(password: string, ctx: z.RefinementCtx): void {
|
||||
const lowercase = password.toLowerCase();
|
||||
const uppercase = password.toUpperCase();
|
||||
|
||||
if(lowercase === password)
|
||||
{
|
||||
ctx.addIssue({
|
||||
code: z.ZodIssueCode.custom,
|
||||
message: "Votre mot de passe doit contenir au moins une majuscule",
|
||||
});
|
||||
}
|
||||
if(uppercase === password)
|
||||
{
|
||||
ctx.addIssue({
|
||||
code: z.ZodIssueCode.custom,
|
||||
message: "Votre mot de passe doit contenir au moins une minuscule",
|
||||
});
|
||||
}
|
||||
if(!/[0-9]/.test(password))
|
||||
{
|
||||
ctx.addIssue({
|
||||
code: z.ZodIssueCode.custom,
|
||||
message: "Votre mot de passe doit contenir au moins un chiffre",
|
||||
});
|
||||
}
|
||||
if(!" !\"#$%&'()*+,-./:;<=>?@[]^_`{|}~".split("").some(e => password.includes(e)))
|
||||
{
|
||||
ctx.addIssue({
|
||||
code: z.ZodIssueCode.custom,
|
||||
message: "Votre mot de passe doit contenir au moins un caractère spécial",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export const schema = z.object({
|
||||
username: z.string({ required_error: "Nom d'utilisateur obligatoire" }).min(3, "Votre nom d'utilisateur doit contenir au moins 3 caractères").max(32, "Votre nom d'utilisateur doit contenir au plus 32 caractères").superRefine((user, ctx) => {
|
||||
const test = z.string().email().safeParse(user);
|
||||
if(test.success)
|
||||
{
|
||||
ctx.addIssue({
|
||||
code: z.ZodIssueCode.invalid_string,
|
||||
validation: 'email',
|
||||
message: "Votre nom d'utilisateur ne peut pas être une addresse mail",
|
||||
});
|
||||
}
|
||||
}),
|
||||
email: z.string({ required_error: "Email obligatoire" }).email("Adresse mail invalide"),
|
||||
password: z.string({ required_error: "Mot de passe obligatoire" }).min(8, "Votre mot de passe doit contenir au moins 8 caractères").max(128, "Votre mot de passe doit contenir au moins 8 caractères").superRefine(securePassword),
|
||||
data: z.object({
|
||||
|
||||
}).partial().nullish(),
|
||||
});
|
||||
|
||||
export type Registration = z.infer<typeof schema>;
|
||||
Reference in New Issue
Block a user