lowcode-data-app
Version:
LowCode App Environment
82 lines (70 loc) • 2.3 kB
JavaScript
/* LOWCODE-DATA-APP / copyright 2024 by ma-ha https://github.com/ma-ha / MIT License */
const log = require( '../helper/log' ).logger
const express = require( 'express' )
const userDta = require( '../persistence/app-dta-user' )
exports: module.exports = {
init
}
let publicPages = [
'main',
'gtc-en-nonav', 'gtc-de-nonav',
'privacy-en-nonav',
'imprint-en-nonav',
'openid-login-nonav'
]
const DEV_PAGES = [
'Customize',
'Marketplace',
'AppEntities-nonav',
'AppEntityProperties-nonav',
'UploadApp-nonav',
'AppEntityStatus-nonav',
'StateAdmin-nonav',
'EditState-nonav'
]
// ----------------------------------------------------------------------------
function init( gui, allCfg ) {
log.info( 'Init App security...' )
let cfg = allCfg.OIDC
// switch securiy on:
gui.enableSec2({
moduleJS: 'js/sec2ekosys.js',
checkLoginInterval: '60000',
loginRedirect: cfg.LOGIN_REDIRECT,
logoutRedirect: cfg.LOGOUT_REDIRECT,
resetPasswordURL : cfg.PWD_RESET_URL,
changePasswordURL : cfg.CHANGE_PWD_URL,
// registgerURL : cfg.REGISTER_URL,
authDomain : cfg.AUTH_DOMAIN,
clientId : cfg.CLIENT_ID, // product ID
audience : cfg.AUDIENCE,
loginURL : cfg.LOGIN_URL,
logoutURL : cfg.LOGOUT_URL,
})
// serve sec code to browser
gui.getExpress().use( '/js', express.static( __dirname + '/serve-js' ) )
// check authorization for GUI pages
gui.authorize = async ( user, page ) => {
// return true
log.debug( 'autz', user, page )
if ( publicPages.indexOf( page ) >= 0 || page.indexOf( 'Docu' ) == 0 ) {
// log.info( 'All users are authorized for page "'+page+'", also "'+user+'"' )
return true;
}
if ( ! user ) {
// log.info( 'User "'+user+'" is not authorized for page "'+page+'"' )
return false
}
let u = await userDta.getUserInfo( user )
// if ( Date.now() - u.lastLogin > 60000 ) {
// log.info( 'lastlogin', page, Date.now() - u.lastLogin, Date.now() , u.lastLogin )
// return false
// }
// log.info( 'user', user, u )
if ( u.role.dev.length == 0 && DEV_PAGES.includes(page) ) {
log.warn( 'User tries to access Dev Page:', user, '->', page )
return false
}
return true
}
}