namespace _espe.helpers { /** */ /* export function yaml_encode( thing : any ) : string { } */ /** * @todo outsource */ export async function bcrypt_compute( input : string, options : { rounds ?: int; } = {} ) : Promise { options = Object.assign( { "rounds": 12, }, options ); const nm_bcrypt = require("bcrypt"); const salt : string = await nm_bcrypt.genSalt(options.rounds) const result : string = await nm_bcrypt.hash(input, salt); return result; } /** * @todo outsource */ export async function bcrypt_compare( password_shall_image : string, password_is : string ) : Promise { const nm_bcrypt = require("bcrypt"); const result = await nm_bcrypt.compare(password_is, password_shall_image); return result; } /** * @deprecated */ export function database_implementation( ) : lib_plankton.database.type_database { return _espe.database.get_implementation(); } /** */ export async function verification_get( data : any ) : Promise { const secret : (null | string) = _espe.conf.get().general.verification_secret; if (secret === null) { return Promise.reject(new Error("no verification secret specified; add in conf as 'general.verification_secret'!")); } else { return lib_plankton.sha256.get( lib_plankton.json.encode(data), secret ); } } /** */ export async function verification_check( data : any, verification : string ) : Promise { const secret : (null | string) = _espe.conf.get().general.verification_secret; if (secret === null) { return Promise.reject(new Error("no verification secret specified; add in conf as 'general.verification_secret'!")); } else { const verification_expected : string = lib_plankton.sha256.get( lib_plankton.json.encode(data), secret ); return (verification === verification_expected); } } /** */ export async function email_send( receivers : Array, subject : string, content : string ) : Promise { const mode : string = _espe.conf.get().email_sending.mode; lib_plankton.log.info( "email_send", { "mode": mode, "receivers": receivers, "subject": subject, } ); switch (mode) { case "regular": { if (_espe.conf.get().email_sending.smtp_credentials === null) { return Promise.reject("no smtp credentials specified; add in conf as 'email_sending.smtp_credentials'!"); } else { // TODO } break; } case "redirect": { if (_espe.conf.get().email_sending.smtp_credentials === null) { return Promise.reject("no smtp credentials specified; add in conf as 'email_sending.smtp_credentials'!"); } else { // TODO } break; } case "console": { lib_plankton.log.info( "email_send_content", { "content": content, } ); break; } case "drop": { // do nothing break; } default: { throw (new Error("unhandled email mode: " + mode)); break; } } } }