feat: Add register + hcaptcha

This commit is contained in:
mrjvs
2026-08-09 20:03:41 +02:00
parent f73a02fb57
commit bf4ab24043
9 changed files with 82 additions and 7 deletions

View File

@@ -1,9 +1,16 @@
import { hcaptchaVerify } from "~~/server/utils/hcaptcha";
import { ForgotPasswordSchema } from "~~/shared/api-types";
export default defineEventHandler(async (event): Promise<void> => {
const body = await readZodBody(event, ForgotPasswordSchema);
const grpc = useApiGrpc(event);
const captchaResult = await hcaptchaVerify(event, body.captchaResponse);
if (!captchaResult) throw createError({
status: 400,
message: 'Invalid captcha',
});
await grpc.forgotPassword({
emailAddressOrUsername: body.emailOrPassword,
})

View File

@@ -4,7 +4,7 @@ import { useLegacyApiGrpc } from "~~/server/utils/useGrpc";
export default defineEventHandler(async (event): Promise<ApiAuthLogin> => {
const body = await readZodBody(event, LoginSchema);
const grpc = useLegacyApiGrpc(event);
const grpc = useApiGrpc(event);
try {
const res = await grpc.login({

View File

@@ -0,0 +1,24 @@
import { ApiAuthLogin, RegisterSchema } from "#shared/api-types"
export default defineEventHandler(async (event): Promise<ApiAuthLogin> => {
const body = await readZodBody(event, RegisterSchema);
const grpc = useApiGrpc(event);
try {
const res = await grpc.register({
email: body.email,
miiName: body.miiName,
captchaResponse: body.captchaResponse,
username: body.username,
password: body.password,
passwordConfirm: body.password
});
return {
accessToken: res.accessToken,
refreshToken: res.refreshToken
};
} catch (error: unknown) {
throw error;
}
});