From 289118b843f4beadbcdce33ebe27c858d448f8c3 Mon Sep 17 00:00:00 2001 From: David Ludwig Date: Tue, 13 Apr 2021 15:44:03 -0500 Subject: [PATCH] Organized web service. Added detailed frontend/backend form validation. --- services/request/.env.example | 2 + services/request/nodemon.json | 4 +- services/request/package.json | 6 +- services/request/src/app/App.vue | 4 +- .../request/src/app/components/TextBox.vue | 90 ++++++++++-- services/request/src/app/util.ts | 5 + services/request/src/app/validation.ts | 0 services/request/src/app/views/Login.vue | 2 +- services/request/src/app/views/Register.vue | 128 ++++++++++++++---- services/request/src/common/validation.ts | 53 ++++++++ services/request/src/server/Application.ts | 10 +- .../server/database/entities/RegisterToken.ts | 7 + .../src/server/database/entities/User.ts | 9 +- .../request/src/server/services/Database.ts | 8 ++ .../request/src/server/services/DiscordBot.ts | 25 +++- .../request/src/server/services/Service.ts | 7 +- .../src/server/services/TorrentClientIpc.ts | 10 +- .../{WebServer.ts => WebServer/index.ts} | 47 +++++-- .../WebServer/requests/RegisterRequest.ts | 37 +++++ .../services/WebServer/requests/Request.ts | 56 ++++++++ .../services/WebServer/requests/index.ts | 24 ++++ .../server/services/WebServer/validators.ts | 24 ++++ services/request/src/server/util.ts | 11 ++ services/request/tailwind.config.js | 2 +- services/request/tsconfig.json | 10 +- services/request/tsconfig.server.json | 10 +- services/request/vite.config.ts | 1 - services/request/yarn.lock | 60 +++++++- 28 files changed, 558 insertions(+), 94 deletions(-) create mode 100644 services/request/src/app/util.ts create mode 100644 services/request/src/app/validation.ts create mode 100644 services/request/src/common/validation.ts rename services/request/src/server/services/{WebServer.ts => WebServer/index.ts} (66%) create mode 100644 services/request/src/server/services/WebServer/requests/RegisterRequest.ts create mode 100644 services/request/src/server/services/WebServer/requests/Request.ts create mode 100644 services/request/src/server/services/WebServer/requests/index.ts create mode 100644 services/request/src/server/services/WebServer/validators.ts create mode 100644 services/request/src/server/util.ts diff --git a/services/request/.env.example b/services/request/.env.example index 66b5969..10358c1 100644 --- a/services/request/.env.example +++ b/services/request/.env.example @@ -7,3 +7,5 @@ DB_DATABASE = autoplex_request SERVER_PORT = 3200 TORRENT_CLIENT_IPC_SOCKET = /tmp/torrent_client.sock + +DISCORD_BOT_TOKEN= diff --git a/services/request/nodemon.json b/services/request/nodemon.json index 04071a0..0cf4da5 100644 --- a/services/request/nodemon.json +++ b/services/request/nodemon.json @@ -1,8 +1,8 @@ { - "watch": ["src/server"], + "watch": ["src/common", "src/server"], "ext": "ts,json", "ignore": ["src/**/*.spec.ts"], - "exec": "node --inspect=0.0.0.0:9229 -r ts-node/register src/server/index.ts", + "exec": "node --inspect=0.0.0.0:9229 -r tsconfig-paths/register -r ts-node/register src/server/index.ts", "events": { "start": "clear" } diff --git a/services/request/package.json b/services/request/package.json index e51b91b..852ff59 100644 --- a/services/request/package.json +++ b/services/request/package.json @@ -9,7 +9,7 @@ "clean": "rimraf ./build", "dev": "vite", "build": "yarn run build:backend && yarn run build:frontend", - "build:backend": "tsc -p ./tsconfig.server.json", + "build:backend": "ttsc -P ./tsconfig.server.json", "build:frontend": "vue-tsc --noEmit -p ./tsconfig.vite.json && vite build", "start": "NODE_ENV=production node .", "start:dev": "nodemon" @@ -27,6 +27,7 @@ "node-ipc": "^9.1.4", "tvdb-v4": "^1.0.0", "typeorm": "^0.2.32", + "validate.js": "^0.13.1", "vue": "^3.0.5", "vue-router": "^4.0.6", "vuedraggable": "^4.0.1", @@ -37,12 +38,15 @@ "@types/node-ipc": "^9.1.3", "@vitejs/plugin-vue": "^1.2.1", "@vue/compiler-sfc": "^3.0.5", + "@zerollup/ts-transform-paths": "^1.7.18", "autoprefixer": "^10.2.5", "nodemon": "^2.0.7", "postcss": "^8.2.9", "rimraf": "^3.0.2", "tailwindcss": "^2.1.1", "ts-node": "^9.1.1", + "tsconfig-paths": "^3.9.0", + "ttypescript": "^1.5.12", "typescript": "^4.1.3", "vite": "^2.1.5", "vue-tsc": "^0.0.15" diff --git a/services/request/src/app/App.vue b/services/request/src/app/App.vue index 61979da..fc9563e 100644 --- a/services/request/src/app/App.vue +++ b/services/request/src/app/App.vue @@ -5,6 +5,6 @@ diff --git a/services/request/src/app/components/TextBox.vue b/services/request/src/app/components/TextBox.vue index b6e5558..2ae75b2 100644 --- a/services/request/src/app/components/TextBox.vue +++ b/services/request/src/app/components/TextBox.vue @@ -4,25 +4,83 @@ {{ label }}
- - + :class="{ 'pr-10': (isValid || error), 'border-red-600 text-red-600': error }" + @blur="onBlur" @change="onChange" @input="setErrorMessage('')"> + - +
-
{{ errorMessage }}
+
{{ error }}
diff --git a/services/request/src/app/util.ts b/services/request/src/app/util.ts new file mode 100644 index 0000000..6b8b50e --- /dev/null +++ b/services/request/src/app/util.ts @@ -0,0 +1,5 @@ +import { single as validate } from "validate.js"; + +export function validateValue(value: string, constraints: any) { + return (validate(value || null, constraints) ?? [""])[0]; +} diff --git a/services/request/src/app/validation.ts b/services/request/src/app/validation.ts new file mode 100644 index 0000000..e69de29 diff --git a/services/request/src/app/views/Login.vue b/services/request/src/app/views/Login.vue index 825f8a9..b5e9662 100644 --- a/services/request/src/app/views/Login.vue +++ b/services/request/src/app/views/Login.vue @@ -1,5 +1,5 @@