Feat: #10 サインアップ / Chg: server-infoでconfigの取得にconfigRepo.get()を使うように / Fix: アカウントが無効でもコミュニティを作成ボタンがある問題

This commit is contained in:
2026-06-01 18:31:05 +09:00
parent 45a682b6ca
commit c725ae41bf
7 changed files with 288 additions and 21 deletions
@@ -1,8 +1,10 @@
import { EntityRepository } from "@mikro-orm/postgresql";
import { UserEntity } from "@/modules/entities/User";
import { ConfigEntity } from "@/modules/entities/Config";
import { hash, argon2id, verify as argon2Verify } from "argon2";
import z from "zod/v3";
import EmailRegex from "@/regexs/email";
import { ErrorBase } from "@/errors";
export class UserRepository extends EntityRepository<UserEntity> {
public static schema = z.object({
@@ -15,7 +17,18 @@ export class UserRepository extends EntityRepository<UserEntity> {
isAdmin: z.boolean(),
});
async createUser(data: Pick<z.infer<typeof UserRepository.schema>, "userid" | "email" | "password" | "isAdmin">) {
async createUser(data: Pick<z.infer<typeof UserRepository.schema>, "userid" | "email" | "password" | "isAdmin"> & {
invitationCode?: string;
}) {
const requiredInvitationCode = await this.em.getRepository(ConfigEntity).get("requiredInvitationCode", "true") as string;
if (requiredInvitationCode && !data.invitationCode) {
return ErrorBase({
bad: "client",
code: "invitation_code_invalid",
message: "招待コードが無効です。",
});
}
const hashed = await hash(data.password, {
type: argon2id,
memoryCost: 2 ** 16,