From 0b4b0fefb22a4efd3ada62f0f0fdb160736de3cd Mon Sep 17 00:00:00 2001 From: BinarySandia04 Date: Mon, 30 Sep 2024 15:28:04 +0200 Subject: [PATCH] Account creation now works --- backend/routes/user.js | 9 +- backend/uploads/image-1727702861648 | Bin 0 -> 10443 bytes client/src/App.vue | 100 ------------ client/src/router/index.js | 8 +- client/src/services/Windows.js | 2 + client/src/views/HomeView.vue | 78 ++++++++- .../src/views/windows/SetupAccountWindow.vue | 149 ++++++++++++++++++ .../settings/CopyPendingUserWindow.vue | 17 +- locales/ca.json | 16 +- locales/en-US.json | 15 +- locales/es-ES.json | 18 ++- 11 files changed, 288 insertions(+), 124 deletions(-) create mode 100644 backend/uploads/image-1727702861648 create mode 100644 client/src/views/windows/SetupAccountWindow.vue diff --git a/backend/routes/user.js b/backend/routes/user.js index fd5d92f9..ab3e8f5a 100755 --- a/backend/routes/user.js +++ b/backend/routes/user.js @@ -36,13 +36,14 @@ router.post('/register', isAdmin, (req, res) => { }); // User gets if setup account exists given the query code -router.get('/setup', (req, res) => { +router.get('/verify-setup', (req, res) => { User.findOne({setupCode: req.query.code}).then(user => { if(user){ res.json({status: "ok", code: req.query.code}); + } else { + res.json({status: "err", msg: "not-exists"}) } - res.json({status: "err", msg: "not-exists"}); - }).catch(res.json({status: "err", msg: "internal"})); + }); }); // User posts the parameters of his new account given by admin @@ -72,7 +73,7 @@ router.post('/setup', rateLimitMiddleware, (req, res) => { }); } else { bcrypt.genSalt(10, (err, salt) => { - bcrypt.hash(user.password, salt, (err, hash) => { + bcrypt.hash(password, salt, (err, hash) => { if(err) throw err; user.password = hash; user.username = username; diff --git a/backend/uploads/image-1727702861648 b/backend/uploads/image-1727702861648 new file mode 100644 index 0000000000000000000000000000000000000000..5a2e59fc31808d979c420f2e51af612484680e1c GIT binary patch literal 10443 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 S8t`8T5Z2hzsN#rQ{C@$&#ahY$ literal 0 HcmV?d00001 diff --git a/client/src/App.vue b/client/src/App.vue index 8f6b4ad7..1ddfd301 100644 --- a/client/src/App.vue +++ b/client/src/App.vue @@ -1,112 +1,12 @@ - - diff --git a/client/src/router/index.js b/client/src/router/index.js index 235b0c93..1d500e1d 100644 --- a/client/src/router/index.js +++ b/client/src/router/index.js @@ -8,10 +8,10 @@ const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ {path: '/', name: 'home', component: HomeView}, - - {path: '/:pathMatch(.*)*', name: "NotFound", component: NotFoundView }, - - + {path: '/setup/:setupCode', redirect: to => { + return {path: '/', query: {setupCode: to.params.setupCode}} + }}, + {path: '/:pathMatch(.*)*', redirect: {name: 'home'} }, ] }) diff --git a/client/src/services/Windows.js b/client/src/services/Windows.js index 28747930..153d1b1d 100644 --- a/client/src/services/Windows.js +++ b/client/src/services/Windows.js @@ -32,6 +32,7 @@ import PluginWindow from '../views/windows/settings/PluginWindow.vue'; import FirstRegisterWindow from '../views/windows/FirstRegisterWindow.vue'; import RegisterUserWindow from '../views/windows/settings/RegisterUserWindow.vue'; import CopyPendingUserWindow from '../views/windows/settings/CopyPendingUserWindow.vue'; +import SetupAccountWindow from '../views/windows/SetupAccountWindow.vue'; let windowMap = { test: ExampleWindow, @@ -41,6 +42,7 @@ let windowMap = { first_register: FirstRegisterWindow, register_user: RegisterUserWindow, copy_pending_user_window: CopyPendingUserWindow, + setup_account: SetupAccountWindow, edit_profile: EditProfileWindow, settings: SettingsWindow, campaign_list: CampaignListWindow, diff --git a/client/src/views/HomeView.vue b/client/src/views/HomeView.vue index d8ddf5cd..ebb8889f 100644 --- a/client/src/views/HomeView.vue +++ b/client/src/views/HomeView.vue @@ -1,18 +1,80 @@