mirror of
https://github.com/janishutz/libreevent.git
synced 2025-11-25 05:14:23 +00:00
66 lines
1.9 KiB
JavaScript
66 lines
1.9 KiB
JavaScript
/*
|
|
* 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; |