diff --git a/src/server/backend/db/db.js b/src/server/backend/db/db.js index 26fb727..6555955 100644 --- a/src/server/backend/db/db.js +++ b/src/server/backend/db/db.js @@ -59,6 +59,21 @@ module.exports.writeDataSimple = ( db, column, searchQuery, data ) => { } ); }; +module.exports.checkDataAvailability = ( db, column, searchQuery ) => { + return new Promise( ( resolve, reject ) => { + dbh.query( { 'command': 'checkDataAvailability', 'property': column, 'searchQuery': searchQuery }, dbRef[ db ] ).then( res => { + if ( res.length > 0 ) { + resolve( true ); + } else { + resolve( false ); + } + } ).catch( error => { + reject( error ); + } ); + } ); +}; + + module.exports.getJSONData = ( file ) => { return new Promise( ( resolve, reject ) => { fs.readFile( path.join( __dirname + '/data/' + file + '.json' ), ( error, data ) => { diff --git a/src/server/backend/userRoutes.js b/src/server/backend/userRoutes.js index 41efb32..9ace9a2 100644 --- a/src/server/backend/userRoutes.js +++ b/src/server/backend/userRoutes.js @@ -140,9 +140,20 @@ module.exports = ( app, settings ) => { app.post( '/user/signup', bodyParser.json(), ( request, response ) => { // TODO: Make sure that user does not exist yet first and if user // exists, send back info that it is that way - response.send( 'ok' ); - db.writeDataSimple( 'users', 'email', request.body.email, { 'pass': pwdmanager.hashPassword( request.query.password ), 'street': '', 'house_number': '', 'country': request.query.country, 'first_name': request.query.firstName, 'name': request.query.name, 'two_fa': String( request.query.twoFA ) } ).then( res => { - console.log( res ); - } ); + // TODO: check for 2fa + // TODO: Send mail to confirm email address + if ( request.body.password && request.body.password === request.body.password2 && request.body.firstName && request.body.name && request.body.country && request.body.mail ) { + db.checkDataAvailability( 'users', 'email', request.body.mail ).then( status => { + if ( status ) { + response.send( 'exists' ); + } else { + db.writeDataSimple( 'users', 'email', request.body.mail, { 'pass': pwdmanager.hashPassword( request.body.password ), 'first_name': request.body.firstName, 'name': request.body.name, 'two_fa': String( request.body.twoFA ), 'user_data': { 'country': request.body.country } } ).then( () => { + response.send( 'ok' ); + } ); + } + } ); + } else { + response.status( 400 ).send( 'incomplete' ); + } } ); }; \ No newline at end of file diff --git a/src/webapp/main/src/views/user/LoginView.vue b/src/webapp/main/src/views/user/LoginView.vue index f8f1ec0..8a627dc 100644 --- a/src/webapp/main/src/views/user/LoginView.vue +++ b/src/webapp/main/src/views/user/LoginView.vue @@ -19,6 +19,7 @@ Sign up instead + Reset password diff --git a/src/webapp/main/src/views/user/SignupView.vue b/src/webapp/main/src/views/user/SignupView.vue index 41a7363..f3f12fe 100644 --- a/src/webapp/main/src/views/user/SignupView.vue +++ b/src/webapp/main/src/views/user/SignupView.vue @@ -12,15 +12,40 @@

Sign up

-
-

-
-

-
-

-
- + + + + + + + + + + + + + +
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+ Log in instead
@@ -28,15 +53,73 @@