adds password max chars hint
This commit is contained in:
@@ -34,23 +34,47 @@
|
||||
extend: validator({
|
||||
schema: z
|
||||
.object({
|
||||
oldPassword: z.string().min(
|
||||
oldPassword: z
|
||||
.string()
|
||||
.min(
|
||||
8,
|
||||
$_("must-be-at-least-n-characters-long", {
|
||||
values: { n: 8 },
|
||||
}),
|
||||
)
|
||||
.max(
|
||||
72,
|
||||
$_("must-be-at-most-n-characters-long", {
|
||||
values: { n: 72 },
|
||||
}),
|
||||
),
|
||||
password: z.string().min(
|
||||
password: z
|
||||
.string()
|
||||
.min(
|
||||
8,
|
||||
$_("must-be-at-least-n-characters-long", {
|
||||
values: { n: 8 },
|
||||
}),
|
||||
)
|
||||
.max(
|
||||
72,
|
||||
$_("must-be-at-most-n-characters-long", {
|
||||
values: { n: 72 },
|
||||
}),
|
||||
),
|
||||
passwordConfirm: z.string().min(
|
||||
passwordConfirm: z
|
||||
.string()
|
||||
.min(
|
||||
8,
|
||||
$_("must-be-at-least-n-characters-long", {
|
||||
values: { n: 8 },
|
||||
}),
|
||||
)
|
||||
.max(
|
||||
72,
|
||||
$_("must-be-at-most-n-characters-long", {
|
||||
values: { n: 72 },
|
||||
}),
|
||||
),
|
||||
})
|
||||
.refine((d) => d.password === d.passwordConfirm, {
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"error-reading-file": "Fehler beim Lesen der Datei",
|
||||
"error-saving-list": "Fehler beim Speichern der Liste",
|
||||
"error-saving-trail": "Fehler beim Speichern der Route",
|
||||
"error-setting-up-strava-integration": "Fehler beim Einrichten der Strava-Integration",
|
||||
"error-setting-up-integration": "Fehler beim Einrichten der Strava-Integration",
|
||||
"error-updating-password": "Fehler beim Aktualisieren des Passworts",
|
||||
"error-updating-strava-integration": "Fehler Aktualisierung der Komoot-Integration",
|
||||
"est-duration": "Gesch. Dauer",
|
||||
@@ -177,6 +177,7 @@
|
||||
"metric": "Metrisch",
|
||||
"moderate": "Mittel",
|
||||
"must-be-at-least-n-characters-long": "Muss mindestens {n} Zeichen lang sein",
|
||||
"must-be-at-most-n-characters-long": "",
|
||||
"my-account": "Mein Konto",
|
||||
"n-days-ago": "vor {n} Tagen",
|
||||
"n-hours-ago": "vor {n} Stunden",
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"error-reading-file": "Error reading file",
|
||||
"error-saving-list": "Error saving list",
|
||||
"error-saving-trail": "Error saving trail",
|
||||
"error-setting-up-strava-integration": "Error setting up strava integration",
|
||||
"error-setting-up-integration": "Error setting up {provider} integration",
|
||||
"error-updating-password": "Error updating password",
|
||||
"error-updating-strava-integration": "Error updating komoot integration",
|
||||
"est-duration": "Est. duration",
|
||||
@@ -177,6 +177,7 @@
|
||||
"metric": "Metric",
|
||||
"moderate": "Moderate",
|
||||
"must-be-at-least-n-characters-long": "Must be at least {n} characters long",
|
||||
"must-be-at-most-n-characters-long": "Must be at most {n} characters long",
|
||||
"my-account": "My Account",
|
||||
"n-days-ago": "{n} days ago",
|
||||
"n-hours-ago": "{n} hours ago",
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"error-reading-file": "Error leyendo el archivo",
|
||||
"error-saving-list": "Error guardando la lista",
|
||||
"error-saving-trail": "Error guardando la ruta",
|
||||
"error-setting-up-strava-integration": "Error setting up strava integration",
|
||||
"error-setting-up-integration": "Error setting up strava integration",
|
||||
"error-updating-password": "Error actualizando la contraseña",
|
||||
"error-updating-strava-integration": "Error updating komoot integration",
|
||||
"est-duration": "Duración estimada",
|
||||
@@ -177,6 +177,7 @@
|
||||
"metric": "Métrica",
|
||||
"moderate": "Medio",
|
||||
"must-be-at-least-n-characters-long": "Tiene que tener por lo menos {n} caracteres",
|
||||
"must-be-at-most-n-characters-long": "",
|
||||
"my-account": "Mi cuenta",
|
||||
"n-days-ago": "hace {n} días",
|
||||
"n-hours-ago": "hace {n} horas",
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"error-reading-file": "Erreur de lecture du fichier",
|
||||
"error-saving-list": "Erreur lors de l'enregistrement de la liste",
|
||||
"error-saving-trail": "Erreur lors de l'enregistrement de l'itinéraire",
|
||||
"error-setting-up-strava-integration": "Error setting up strava integration",
|
||||
"error-setting-up-integration": "Error setting up strava integration",
|
||||
"error-updating-password": "Erreur lors de la mise à jour du mot de passe",
|
||||
"error-updating-strava-integration": "Error updating komoot integration",
|
||||
"est-duration": "Temps estimé",
|
||||
@@ -177,6 +177,7 @@
|
||||
"metric": "Métrique",
|
||||
"moderate": "Moyenne",
|
||||
"must-be-at-least-n-characters-long": "Doit être composé d'au moins {n} caractères",
|
||||
"must-be-at-most-n-characters-long": "",
|
||||
"my-account": "Mon profil",
|
||||
"n-days-ago": "il y a {n} jours",
|
||||
"n-hours-ago": "il y a {n} heures",
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"error-reading-file": "Hiba a fájl olvasása közben",
|
||||
"error-saving-list": "Error saving list",
|
||||
"error-saving-trail": "Error saving trail",
|
||||
"error-setting-up-strava-integration": "Error setting up strava integration",
|
||||
"error-setting-up-integration": "Error setting up strava integration",
|
||||
"error-updating-password": "Error updating password",
|
||||
"error-updating-strava-integration": "Error updating komoot integration",
|
||||
"est-duration": "Becsült időtartam",
|
||||
@@ -177,6 +177,7 @@
|
||||
"metric": "Metrikus",
|
||||
"moderate": "Mérsékelt",
|
||||
"must-be-at-least-n-characters-long": "Legalább {n} karakter hosszúnak kell lennie",
|
||||
"must-be-at-most-n-characters-long": "",
|
||||
"my-account": "My Account",
|
||||
"n-days-ago": "{n} days ago",
|
||||
"n-hours-ago": "{n} hours ago",
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"error-reading-file": "Errore durante la lettura del file",
|
||||
"error-saving-list": "Errore salvando la lista",
|
||||
"error-saving-trail": "Errore nel salvataggio del percorso",
|
||||
"error-setting-up-strava-integration": "Error setting up strava integration",
|
||||
"error-setting-up-integration": "Error setting up strava integration",
|
||||
"error-updating-password": "Errore nell'aggiornamento della password",
|
||||
"error-updating-strava-integration": "Error updating komoot integration",
|
||||
"est-duration": "Durata stimata",
|
||||
@@ -177,6 +177,7 @@
|
||||
"metric": "Metrico",
|
||||
"moderate": "Moderato",
|
||||
"must-be-at-least-n-characters-long": "Deve essere lungo almeno {n} caratteri",
|
||||
"must-be-at-most-n-characters-long": "",
|
||||
"my-account": "Il mio account",
|
||||
"n-days-ago": "{n} giorni fa",
|
||||
"n-hours-ago": "{n} ore fa",
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"error-reading-file": "Het bestand kan niet worden ingelezen",
|
||||
"error-saving-list": "Error saving list",
|
||||
"error-saving-trail": "Error saving trail",
|
||||
"error-setting-up-strava-integration": "Error setting up strava integration",
|
||||
"error-setting-up-integration": "Error setting up strava integration",
|
||||
"error-updating-password": "Error updating password",
|
||||
"error-updating-strava-integration": "Error updating komoot integration",
|
||||
"est-duration": "Geschatte duur",
|
||||
@@ -177,6 +177,7 @@
|
||||
"metric": "Metrisch",
|
||||
"moderate": "Gemiddeld",
|
||||
"must-be-at-least-n-characters-long": "Minimaal {n} tekens",
|
||||
"must-be-at-most-n-characters-long": "",
|
||||
"my-account": "My Account",
|
||||
"n-days-ago": "{n} dagen geleden",
|
||||
"n-hours-ago": "{n} uuren geleden",
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"error-reading-file": "Błąd wczytywania pliku",
|
||||
"error-saving-list": "Błąd przy zapisywaniu listy",
|
||||
"error-saving-trail": "Błąd podczas zapisywania szlaku",
|
||||
"error-setting-up-strava-integration": "Error setting up strava integration",
|
||||
"error-setting-up-integration": "Error setting up strava integration",
|
||||
"error-updating-password": "Błąd podczas aktualizacji hasła",
|
||||
"error-updating-strava-integration": "Error updating komoot integration",
|
||||
"est-duration": "Szacowany czas",
|
||||
@@ -177,6 +177,7 @@
|
||||
"metric": "Metryczne",
|
||||
"moderate": "Średni",
|
||||
"must-be-at-least-n-characters-long": "Długość musi wynosić przynajmniej {n} znaków",
|
||||
"must-be-at-most-n-characters-long": "",
|
||||
"my-account": "Moje konto",
|
||||
"n-days-ago": "{n} dni temu",
|
||||
"n-hours-ago": "{n} godzin temu",
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"error-reading-file": "Erro ao ler o arquivo",
|
||||
"error-saving-list": "Erro ao gravar lista",
|
||||
"error-saving-trail": "Erro ao gravar percurso",
|
||||
"error-setting-up-strava-integration": "Error setting up strava integration",
|
||||
"error-setting-up-integration": "Error setting up strava integration",
|
||||
"error-updating-password": "Erro ao atualizar password",
|
||||
"error-updating-strava-integration": "Error updating komoot integration",
|
||||
"est-duration": "Duração prevista",
|
||||
@@ -177,6 +177,7 @@
|
||||
"metric": "Métrica",
|
||||
"moderate": "Moderado",
|
||||
"must-be-at-least-n-characters-long": "Deve ter pelo menos {n} caracteres",
|
||||
"must-be-at-most-n-characters-long": "",
|
||||
"my-account": "A minha conta",
|
||||
"n-days-ago": "{n} dias atrás",
|
||||
"n-hours-ago": "{n} horas atrás",
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"error-reading-file": "读取文件错误",
|
||||
"error-saving-list": "保存列表失败",
|
||||
"error-saving-trail": "保存路线失败",
|
||||
"error-setting-up-strava-integration": "Error setting up strava integration",
|
||||
"error-setting-up-integration": "Error setting up strava integration",
|
||||
"error-updating-password": "更新密码失败",
|
||||
"error-updating-strava-integration": "Error updating komoot integration",
|
||||
"est-duration": "预计时长",
|
||||
@@ -177,6 +177,7 @@
|
||||
"metric": "公制",
|
||||
"moderate": "中等",
|
||||
"must-be-at-least-n-characters-long": "长度至少 {n} 字符",
|
||||
"must-be-at-most-n-characters-long": "",
|
||||
"my-account": "我的账户",
|
||||
"n-days-ago": "{n} 天前",
|
||||
"n-hours-ago": "{n} 小时前",
|
||||
|
||||
@@ -4,7 +4,7 @@ import type { User } from "../user";
|
||||
const UserCreateSchema = (z.object({
|
||||
username: z.string({ message: "required" }).min(3, "must-be-at-least-n-characters-long").regex(/^[\w][\w\.]*$/, "invalid-username"),
|
||||
email: z.string({ message: "required" }).email("not-a-valid-email-address"),
|
||||
password: z.string().min(8, "must-be-at-least-n-characters-long"),
|
||||
password: z.string().min(8, "must-be-at-least-n-characters-long").max(72),
|
||||
passwordConfirm: z.string().optional()
|
||||
|
||||
}) satisfies ZodType<Partial<User>>).refine((data) => data.password === data.passwordConfirm, {
|
||||
@@ -15,9 +15,9 @@ const UserCreateSchema = (z.object({
|
||||
const UserUpdateSchema = (z.object({
|
||||
username: z.string({ message: "required" }).min(3, "must-be-at-least-n-characters-long").regex(/^[\w][\w\.]*$/, "invalid-username").optional(),
|
||||
email: z.string({ message: "required" }).email("not-a-valid-email-address").optional(),
|
||||
password: z.string().min(8, "must-be-at-least-n-characters-long").optional(),
|
||||
oldPassword: z.string().min(8, "must-be-at-least-n-characters-long").optional(),
|
||||
passwordConfirm: z.string().min(8, "must-be-at-least-n-characters-long").optional(),
|
||||
password: z.string().min(8, "must-be-at-least-n-characters-long").max(72).optional(),
|
||||
oldPassword: z.string().min(8, "must-be-at-least-n-characters-long").max(72).optional(),
|
||||
passwordConfirm: z.string().min(8, "must-be-at-least-n-characters-long").max(72).optional(),
|
||||
}) satisfies ZodType<Partial<User>>).refine((data) => data.password === data.passwordConfirm, {
|
||||
message: "passwords-must-match",
|
||||
path: ["passwordConfirm"],
|
||||
|
||||
@@ -8,8 +8,8 @@ export async function POST(event: RequestEvent) {
|
||||
const data = await event.request.json()
|
||||
const safeData = z.object({
|
||||
token: z.string(),
|
||||
password: z.string(),
|
||||
passwordConfirm: z.string()
|
||||
password: z.string().min(8).max(72),
|
||||
passwordConfirm: z.string().min(8).max(72)
|
||||
}).refine(d => d.password === d.passwordConfirm).parse(data)
|
||||
const r = await pb.collection('users').confirmPasswordReset(safeData.token, safeData.password, safeData.passwordConfirm);
|
||||
return json(r);
|
||||
|
||||
@@ -9,7 +9,7 @@ export async function POST(event: RequestEvent) {
|
||||
const safeData = z.object({
|
||||
email: z.string().email().optional(),
|
||||
username: z.string().optional(),
|
||||
password: z.string()
|
||||
password: z.string().min(8).max(72)
|
||||
}).refine(d => d.email !== undefined || d.username !== undefined).parse(data);
|
||||
|
||||
|
||||
|
||||
@@ -23,17 +23,33 @@
|
||||
extend: validator({
|
||||
schema: z
|
||||
.object({
|
||||
password: z.string().min(
|
||||
password: z
|
||||
.string()
|
||||
.min(
|
||||
8,
|
||||
$_("must-be-at-least-n-characters-long", {
|
||||
values: { n: 8 },
|
||||
}),
|
||||
)
|
||||
.max(
|
||||
72,
|
||||
$_("must-be-at-most-n-characters-long", {
|
||||
values: { n: 72 },
|
||||
}),
|
||||
),
|
||||
passwordConfirm: z.string().min(
|
||||
passwordConfirm: z
|
||||
.string()
|
||||
.min(
|
||||
8,
|
||||
$_("must-be-at-least-n-characters-long", {
|
||||
values: { n: 8 },
|
||||
}),
|
||||
)
|
||||
.max(
|
||||
72,
|
||||
$_("must-be-at-most-n-characters-long", {
|
||||
values: { n: 72 },
|
||||
}),
|
||||
),
|
||||
})
|
||||
.refine((d) => d.password === d.passwordConfirm, {
|
||||
|
||||
@@ -41,7 +41,15 @@
|
||||
extend: validator({
|
||||
schema: z.object({
|
||||
username: z.string().min(1, "required"),
|
||||
password: z.string().min(1, "required"),
|
||||
password: z
|
||||
.string()
|
||||
.min(1, "required")
|
||||
.max(
|
||||
72,
|
||||
$_("must-be-at-most-n-characters-long", {
|
||||
values: { n: 72 },
|
||||
}),
|
||||
),
|
||||
}),
|
||||
}),
|
||||
onSubmit: async (newUser) => {
|
||||
|
||||
@@ -39,11 +39,19 @@
|
||||
.string()
|
||||
.min(1, "required")
|
||||
.email("not-a-valid-email-address"),
|
||||
password: z.string().min(
|
||||
password: z
|
||||
.string()
|
||||
.min(
|
||||
8,
|
||||
$_("must-be-at-least-n-characters-long", {
|
||||
values: { n: 8 },
|
||||
}),
|
||||
)
|
||||
.max(
|
||||
72,
|
||||
$_("must-be-at-most-n-characters-long", {
|
||||
values: { n: 72 },
|
||||
}),
|
||||
),
|
||||
}),
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user