mirror of
https://github.com/janishutz/libreevent.git
synced 2025-11-25 21:34:24 +00:00
almost finished admin auth system
This commit is contained in:
66
src/server/admin/2fa.js
Normal file
66
src/server/admin/2fa.js
Normal file
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* libreevent - 2fa.js
|
||||
*
|
||||
* Created by Janis Hutz 07/11/2023, Licensed under the GPL V3 License
|
||||
* https://janishutz.com, development@janishutz.com
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
const token = require( '../backend/token.js' );
|
||||
// let createSSRApp = require( 'vue' ).createSSRApp;
|
||||
// let renderToString = require( 'vue/server-renderer' ).renderToString;
|
||||
|
||||
class TwoFA {
|
||||
constructor () {
|
||||
this.tokenStore = {};
|
||||
this.references = {};
|
||||
}
|
||||
|
||||
registerStandardAuthentication () {
|
||||
let tok = token.generateToken( 60 );
|
||||
while ( this.tokenStore[ tok ] ) {
|
||||
tok = token.generateToken( 60 );
|
||||
}
|
||||
this.tokenStore[ tok ] = { 'mode': 'standard' };
|
||||
return { 'token': tok };
|
||||
}
|
||||
|
||||
registerEnhancedAuthentication () {
|
||||
let tok = token.generateToken( 60 );
|
||||
while ( this.tokenStore[ tok ] ) {
|
||||
tok = token.generateToken( 60 );
|
||||
}
|
||||
let code = token.generateNumber( 6 );
|
||||
this.tokenStore[ tok ] = { 'mode': 'enhanced', 'code': code };
|
||||
return { 'code': code, 'token': tok };
|
||||
}
|
||||
|
||||
storeTokenReference ( token, sessionID ) {
|
||||
this.references[ token ] = sessionID;
|
||||
}
|
||||
|
||||
getTokenReference ( token ) {
|
||||
return this.references[ token ];
|
||||
}
|
||||
|
||||
verifyEnhanced ( token, number = '' ) {
|
||||
if ( this.tokenStore[ token ]?.mode === 'standard' ) return true;
|
||||
else if ( this.tokenStore[ token ]?.mode === 'enhanced' ) {
|
||||
if ( this.tokenStore[ token ].code == number ) {
|
||||
delete this.tokenStore[ token ];
|
||||
return true;
|
||||
} else return false;
|
||||
} else return false;
|
||||
}
|
||||
|
||||
verifySimple ( token ) {
|
||||
if ( this.tokenStore[ token ]?.mode === 'standard' ) {
|
||||
delete this.tokenStore[ token ];
|
||||
return 'standard';
|
||||
} else if ( this.tokenStore[ token ]?.mode === 'enhanced' ) return 'enhanced';
|
||||
else return 'invalid';
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = TwoFA;
|
||||
Reference in New Issue
Block a user