summary refs log tree commit diff
path: root/util/src
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-09-20 17:38:16 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-09-20 17:38:16 +0200
commit269bbdfeae9672e17f0dbd02172e925fc16eb904 (patch)
tree513c0c125a5d917487822f4d64bce9d2eb3e6429 /util/src
parent:arrow_up: update test client (diff)
downloadserver-269bbdfeae9672e17f0dbd02172e925fc16eb904.tar.xz
:sparkles: accept invite page
Diffstat (limited to 'util/src')
-rw-r--r--util/src/entities/Config.ts10
-rw-r--r--util/src/entities/Invite.ts10
2 files changed, 16 insertions, 4 deletions
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 afad9c02..1396004e 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";
@@ -63,4 +64,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;
+	}
 }