root login + admin account settings

This commit is contained in:
2023-09-01 17:16:52 +02:00
parent bac321f48e
commit 043aa171ca
6 changed files with 136 additions and 38 deletions

View File

@@ -9,6 +9,7 @@
// const db = require( './db/db.js' );
const pwdmanager = require( './pwdmanager.js' );
const db = require( '../backend/db/db.js' );
const auth = require( './2fa.js' );
const twoFA = new auth();
const path = require( 'path' );
@@ -44,7 +45,15 @@ module.exports = ( app, settings ) => {
let res = twoFA.registerEnhancedAuthentication();
let ipRetrieved = request.headers[ 'x-forwarded-for' ];
let ip = ipRetrieved ? ipRetrieved.split( /, / )[ 0 ] : request.connection.remoteAddress;
mailManager.sendMail( request.body.mail, await twoFA.generateTwoFAMail( res.token, ip, settings.yourDomain, settings.name ), 'Verify admin account login', settings.mailSender );
if ( request.body.mail === 'root' ) {
db.getJSONDataSimple( 'rootAccount', 'email' ).then( email => {
( async () => {
mailManager.sendMail( email, await twoFA.generateTwoFAMail( res.token, ip, settings.yourDomain, settings.name ), 'Verify admin account login', settings.mailSender );
} )();
} );
} else {
mailManager.sendMail( request.body.mail, await twoFA.generateTwoFAMail( res.token, ip, settings.yourDomain, settings.name ), 'Verify admin account login', settings.mailSender );
}
request.session.token = res.token;
response.send( { 'status': '2fa+', 'code': res.code } );
} )();

View File

@@ -8,6 +8,7 @@
*/
const db = require( '../../backend/db/db.js' );
const pwdmanager = require( '../pwdmanager.js' );
const fs = require( 'fs' );
const path = require( 'path' );
const pm = require( '../../backend/plugins/manager.js' );
@@ -113,17 +114,33 @@ class POSTHandler {
reject( { 'code': 500, 'error': error } );
} );
} else if ( call === 'createAdminAccount' ) {
db.writeDataSimple( 'admin', 'email', data.email, data ).then( resp => {
resolve( resp );
} ).catch( error => {
reject( { 'code': 500, 'error': error } );
let dat = data;
pwdmanager.hashPassword( dat.pass ).then( hash => {
dat[ 'pass' ] = hash;
db.writeDataSimple( 'admin', 'email', data.email, dat ).then( resp => {
resolve( resp );
} ).catch( error => {
reject( { 'code': 500, 'error': error } );
} );
} );
} else if ( call === 'updateAdminAccount' ) {
db.writeDataSimple( 'admin', 'email', data.email, data ).then( resp => {
resolve( resp );
} ).catch( error => {
reject( { 'code': 500, 'error': error } );
} );
if ( data.pass ) {
let dat = data;
pwdmanager.hashPassword( data.pass ).then( hash => {
dat[ 'pass' ] = hash;
db.writeDataSimple( 'admin', 'email', data.email, dat ).then( resp => {
resolve( resp );
} ).catch( error => {
reject( { 'code': 500, 'error': error } );
} );
} );
} else {
db.writeDataSimple( 'admin', 'email', data.email, data ).then( resp => {
resolve( resp );
} ).catch( error => {
reject( { 'code': 500, 'error': error } );
} );
}
} else if ( call === 'deleteAdminAccount' ) {
db.deleteDataSimple( 'admin', 'email', data.email ).then( resp => {
resolve( resp );

View File

@@ -23,7 +23,7 @@ module.exports.checkpassword = ( username, password ) => {
if ( username === 'root' ) {
db.getJSONData( 'rootAccount' ).then( account => {
bcrypt.compare( password, account.pass ).then( res => {
resolve( { 'status': res, 'twoFA': true } );
resolve( { 'status': res, 'twoFA': 'enhanced' } );
} );
} );
} else {