Feat: #10 サインアップ / Chg: server-infoでconfigの取得にconfigRepo.get()を使うように / Fix: アカウントが無効でもコミュニティを作成ボタンがある問題
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user