From 34eb270aca5c8356f6b9117cd759ef3e89560226 Mon Sep 17 00:00:00 2001
From: I-Have-An-Issue <34550332+I-Have-An-Issue@users.noreply.github.com>
Date: Mon, 10 Oct 2022 18:28:46 -0400
Subject: [PATCH] Coool page
---
package-lock.json | 5 +-
package.json | 3 +-
src/lib/constants.js | 6 +++
src/lib/database.js | 2 +-
.../(nolayout)/register/+page.server.js | 42 +++++++++++++++
src/routes/(nolayout)/register/+page.svelte | 51 +++++++++++++++----
src/routes/api/login/+server.js | 0
src/routes/api/register/+server.js | 23 +++++++++
8 files changed, 118 insertions(+), 14 deletions(-)
create mode 100644 src/lib/constants.js
create mode 100644 src/routes/(nolayout)/register/+page.server.js
create mode 100644 src/routes/api/login/+server.js
create mode 100644 src/routes/api/register/+server.js
diff --git a/package-lock.json b/package-lock.json
index 2a4e8bc..9d610a0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,7 @@
"dependencies": {
"@sveltejs/adapter-node": "^1.0.0-next.96",
"bcrypt": "^5.1.0",
+ "cookie": "^0.5.0",
"mongodb": "^4.10.0"
},
"devDependencies": {
@@ -891,7 +892,6 @@
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
"integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
- "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -3727,8 +3727,7 @@
"cookie": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
- "dev": true
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
},
"cssesc": {
"version": "3.0.0",
diff --git a/package.json b/package.json
index c364b60..24b4f7e 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
"private": true,
"scripts": {
"start": "node build/",
- "dev": "vite dev",
+ "dev": "vite dev --port 80",
"build": "vite build",
"preview": "vite preview",
"lint": "prettier --plugin-search-dir . --check .",
@@ -26,6 +26,7 @@
"dependencies": {
"@sveltejs/adapter-node": "^1.0.0-next.96",
"bcrypt": "^5.1.0",
+ "cookie": "^0.5.0",
"mongodb": "^4.10.0"
}
}
diff --git a/src/lib/constants.js b/src/lib/constants.js
new file mode 100644
index 0000000..12a41ea
--- /dev/null
+++ b/src/lib/constants.js
@@ -0,0 +1,6 @@
+export const COOKIE_NAME = ".ROWBLOX_SESSION_DO_NOT_SHARE";
+export const USERNAME_REGEX = /[^A-Za-z0-9\-_ ]/g;
+export const MIN_USERNAME_LENGTH = 3;
+export const MAX_USERNAME_LENGTH = 16;
+export const MIN_PASSWORD_LENGTH = 0;
+export const INVITE_KEY_PREFIX = "rowblox-";
diff --git a/src/lib/database.js b/src/lib/database.js
index 66e980f..2054586 100644
--- a/src/lib/database.js
+++ b/src/lib/database.js
@@ -1,6 +1,6 @@
import { MongoClient } from "mongodb";
import { hash, compare } from "bcrypt";
-import { prerendering } from "$app/env";
+import { prerendering } from "$app/environment";
if (!process.env.MONGO_URL) throw new Error("Missing MONGO_URL env variable!");
diff --git a/src/routes/(nolayout)/register/+page.server.js b/src/routes/(nolayout)/register/+page.server.js
new file mode 100644
index 0000000..65064d9
--- /dev/null
+++ b/src/routes/(nolayout)/register/+page.server.js
@@ -0,0 +1,42 @@
+import { invalid, redirect } from "@sveltejs/kit";
+import { MIN_USERNAME_LENGTH, MAX_USERNAME_LENGTH, USERNAME_REGEX, MIN_PASSWORD_LENGTH, INVITE_KEY_PREFIX, COOKIE_NAME } from "$lib/constants";
+
+/** @type {import('./$types').Actions} */
+export const actions = {
+ default: async ({ cookies, request }) => {
+ const session = cookies.get(COOKIE_NAME);
+ if (session) return redirect(302, "/");
+
+ const data = await request.formData();
+ const username = data.get("username");
+ const password = data.get("password");
+ const confirm_password = data.get("confirm_password");
+ const invite_key = data.get("invite_key");
+
+ console.log(username, password, confirm_password, invite_key);
+
+ if (username.length < MIN_USERNAME_LENGTH || username.length > MAX_USERNAME_LENGTH || new RegExp(USERNAME_REGEX).test(username))
+ return invalid(400, {
+ username,
+ invite_key,
+ error: "username"
+ });
+
+ if (username.length < MIN_PASSWORD_LENGTH || confirm_password !== password)
+ return invalid(400, {
+ username,
+ invite_key,
+ error: "password"
+ });
+
+ if (!invite_key.startsWith(INVITE_KEY_PREFIX))
+ return invalid(400, {
+ username,
+ invite_key,
+ error: "invite_key"
+ });
+
+ cookies.set(COOKIE_NAME, "murder row");
+ return invalid(500, { message: "Dis shit does NOT WORK!" });
+ }
+};
diff --git a/src/routes/(nolayout)/register/+page.svelte b/src/routes/(nolayout)/register/+page.svelte
index 29d9e2a..751c593 100644
--- a/src/routes/(nolayout)/register/+page.svelte
+++ b/src/routes/(nolayout)/register/+page.svelte
@@ -1,20 +1,53 @@