diff --git a/src/server/app.js b/src/server/app.js index 7b9d1f2..cb11c66 100644 --- a/src/server/app.js +++ b/src/server/app.js @@ -36,6 +36,7 @@ app.use( cookieParser() ); app.use( express.static( '../webapp/dist' ) ); require( './admin/routes.js' )( app, settings ); // admin route +require( './backend/userRoutes.js' )( app, settings ); // user route app.use( ( request, response ) => { response.sendFile( path.join( __dirname + '/../webapp/dist/index.html' ) ); diff --git a/src/server/backend/credentials/pwdmanager.js b/src/server/backend/credentials/pwdmanager.js new file mode 100644 index 0000000..717a7ad --- /dev/null +++ b/src/server/backend/credentials/pwdmanager.js @@ -0,0 +1,25 @@ +/* +* libreevent - pwdmanager.js +* +* Created by Janis Hutz 07/11/2023, Licensed under the GPL V3 License +* https://janishutz.com, development@janishutz.com +* +* +*/ + +/* + These functions are required to verify user login and to create new users + and to hash new passwords (if user changes password.) +*/ + +// import and init +const bcrypt = require( 'bcrypt' ); +const db = require( '../db/db.js' ); + +module.exports.checkpassword = function checkpassword ( username, password ) { + return new Promise( resolve => { + db.getData( 'user', username ).then( data => { + resolve( bcrypt.compareSync( password, data ) ); + } ); + } ); +}; \ No newline at end of file diff --git a/src/server/backend/db/db.js b/src/server/backend/db/db.js index 5f9155b..9372c40 100644 --- a/src/server/backend/db/db.js +++ b/src/server/backend/db/db.js @@ -11,7 +11,6 @@ const path = require( 'path' ); const fs = require( 'fs' ); module.exports.getData = function getData ( db, searchQuery ) { - console.log( db + searchQuery ); return new Promise( resolve => { resolve( '$2b$05$ElMYWoMjk7567lXkIkee.e.6cxCrWU4gkfuNLB8gmGYLQQPm7gT3O' ); } ); diff --git a/src/server/backend/db/jsondb.js b/src/server/backend/db/jsondb.js index 8440d15..24fe39a 100644 --- a/src/server/backend/db/jsondb.js +++ b/src/server/backend/db/jsondb.js @@ -1 +1,14 @@ -class \ No newline at end of file +/* +* libreevent - jsondb.js +* +* Created by Janis Hutz 07/11/2023, Licensed under the GPL V3 License +* https://janishutz.com, development@janishutz.com +* +* +*/ + +class JSONDB { + constructor () { + + } +} \ No newline at end of file diff --git a/src/server/backend/routes.js b/src/server/backend/routes.js deleted file mode 100644 index 509f178..0000000 --- a/src/server/backend/routes.js +++ /dev/null @@ -1,17 +0,0 @@ -/* -* libreevent - routes.js -* -* Created by Janis Hutz 07/11/2023, Licensed under the GPL V3 License -* https://janishutz.com, development@janishutz.com -* -* -*/ - -const db = require( './db/db.js' ); - -module.exports = ( app, settings ) => { - app.post( '/api/reserveTicket', ( request, response ) ) { - db.getData( 'test', request.body ); - response.send( 'ok' ); - }; -}; \ No newline at end of file diff --git a/src/server/backend/userRoutes.js b/src/server/backend/userRoutes.js new file mode 100644 index 0000000..9acdc64 --- /dev/null +++ b/src/server/backend/userRoutes.js @@ -0,0 +1,38 @@ +/* +* libreevent - routes.js +* +* Created by Janis Hutz 07/11/2023, Licensed under the GPL V3 License +* https://janishutz.com, development@janishutz.com +* +* +*/ + +const db = require( './db/db.js' ); +const pwdmanager = require( './credentials/pwdmanager.js' ); + +module.exports = ( app, settings ) => { + app.post( '/api/reserveTicket', ( request, response ) => { + db.getData( 'test', request.body ); + response.send( 'ok' ); + } ); + + app.post( '/user/login', ( request, response ) => { + if ( request.body.mail && request.body.password ) { + pwdmanager.checkpassword( request.body.mail, request.body.password ).then( data => { + if ( data ) { + if ( settings.twoFA ) { + // TODO: Support both methods of 2fa + response.send( '2fa' ); + } else { + request.session.loggedInUser = true; + response.send( 'ok' ); + } + } else { + response.send( 'pwErr' ); + } + } ); + } else { + response.send( 'missingCredentials' ); + } + } ); +}; \ No newline at end of file diff --git a/src/server/config.json b/src/server/config.json index bc8c0b4..4be959e 100644 --- a/src/server/config.json +++ b/src/server/config.json @@ -1,3 +1,4 @@ { - "init":true + "init":true, + "twoFA": true } \ No newline at end of file diff --git a/src/webapp/src/components/notifications/notifications.vue b/src/webapp/src/components/notifications/notifications.vue index c6ba5a1..317f583 100644 --- a/src/webapp/src/components/notifications/notifications.vue +++ b/src/webapp/src/components/notifications/notifications.vue @@ -1,6 +1,6 @@