33 lines
1009 B
TypeScript
33 lines
1009 B
TypeScript
import { Password } from "@convex-dev/auth/providers/Password";
|
|
import { convexAuth } from "@convex-dev/auth/server";
|
|
|
|
/**
|
|
* Convex Auth 配置
|
|
*
|
|
* 配置密码认证方式,支持用户通过邮箱和密码注册/登录。
|
|
*/
|
|
export const { auth, signIn, signOut, store, isAuthenticated } = convexAuth({
|
|
providers: [
|
|
Password({
|
|
/**
|
|
* 密码要求验证
|
|
*/
|
|
validatePasswordRequirements: (password: string) => {
|
|
if (password.length < 8) {
|
|
throw new Error("密码至少需要 8 个字符");
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 用户资料配置
|
|
*/
|
|
profile(params, _ctx) {
|
|
const email = typeof params.email === "string" ? params.email : String(params.email ?? "");
|
|
const name = typeof params.name === "string" ? params.name : "";
|
|
// 说明:Convex 的 Value 类型不允许 undefined;这里统一给 name 一个字符串占位。
|
|
return { email, name: name.trim() ? name : "" };
|
|
},
|
|
}),
|
|
],
|
|
});
|