diff --git a/util/src/entities/Config.ts b/util/src/entities/Config.ts
index fd830db8..f969b6bb 100644
--- a/util/src/entities/Config.ts
+++ b/util/src/entities/Config.ts
@@ -110,13 +110,13 @@ export interface ConfigValue {
};
register: {
email: {
- necessary: boolean; // we have to use necessary instead of required as the cli tool uses json schema and can't use required
+ required: boolean;
allowlist: boolean;
blocklist: boolean;
domains: string[];
};
dateOfBirth: {
- necessary: boolean;
+ required: boolean;
minimum: number; // in years
};
requireCaptcha: boolean;
@@ -125,6 +125,7 @@ export interface ConfigValue {
allowMultipleAccounts: boolean;
blockProxies: boolean;
password: {
+ required: boolean;
minLength: number;
minNumbers: number;
minUpperCase: number;
@@ -246,14 +247,14 @@ export const DefaultConfigOptions: ConfigValue = {
},
register: {
email: {
- necessary: true,
+ required: false,
allowlist: false,
blocklist: true,
domains: [], // TODO: efficiently save domain blocklist in database
// domains: fs.readFileSync(__dirname + "/blockedEmailDomains.txt", { encoding: "utf8" }).split("\n"),
},
dateOfBirth: {
- necessary: true,
+ required: false,
minimum: 13,
},
requireInvite: false,
@@ -262,6 +263,7 @@ export const DefaultConfigOptions: ConfigValue = {
allowMultipleAccounts: true,
blockProxies: true,
password: {
+ required: false,
minLength: 8,
minNumbers: 2,
minUpperCase: 2,
diff --git a/util/src/entities/Invite.ts b/util/src/entities/Invite.ts
index cb308823..78545b02 100644
--- a/util/src/entities/Invite.ts
+++ b/util/src/entities/Invite.ts
@@ -1,4 +1,5 @@
import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn, RelationId } from "typeorm";
+import { Member } from ".";
import { BaseClass } from "./BaseClass";
import { Channel } from "./Channel";
import { Guild } from "./Guild";
@@ -69,4 +70,13 @@ export class Invite extends BaseClass {
@Column({ nullable: true })
target_user_type?: number;
+
+ static async joinGuild(user_id: string, code: string) {
+ const invite = await Invite.findOneOrFail({ code });
+ if (invite.uses++ >= invite.max_uses && invite.max_uses !== 0) await Invite.delete({ code });
+ else await invite.save();
+
+ await Member.addToGuild(user_id, invite.guild_id);
+ return invite;
+ }
}
|