Server Action
Aynı politikayı kontrol eden bir Server Action'a gönderilen düz form.
← Tüm örnekler·server-action
Önizleme
// app/signup/actions.ts
"use server";
import { validatePassword } from "@virastack/password/server";
import type { PasswordIssue } from "@virastack/password/strength";
import { policy } from "@/lib/password-policy";
export type SignupState = { ok: boolean; issues: PasswordIssue[] } | null;
export async function signup(_state: SignupState, formData: FormData): Promise<SignupState> {
// The browser can be skipped; the server checks again with the same policy.
const result = validatePassword(formData.get("password"), policy, {
forbidden: [formData.get("email")],
confirm: formData.get("confirm"),
});
if (!result.valid) return { ok: false, issues: result.issues };
// await createUser(email, await hash(result.password)) — result.password is NFKC-normalized
return { ok: true, issues: [] };
}Detaylar
- validatePassword FormData değerlerini doğrudan okur.
- forbidden ve confirm sunucuda da kontrol edilir.
- NFKC'ye normalleştirilmiş result.password değerini hash'leyin.
Hook API için useViraPassword(), stil ve ikonlar için customization.
