SYNC: checking logged users

This commit is contained in:
SPRINX0\prochazka
2025-07-14 15:21:55 +02:00
committed by Diflow
parent 16d2a9bf99
commit ac40bd1e17
2 changed files with 38 additions and 14 deletions

View File

@@ -21,7 +21,13 @@ const {
} = require('../utility/cloudIntf'); } = require('../utility/cloudIntf');
const socket = require('../utility/socket'); const socket = require('../utility/socket');
const { sendToAuditLog } = require('../utility/auditlog'); const { sendToAuditLog } = require('../utility/auditlog');
const { isLoginLicensed, LOGIN_LIMIT_ERROR } = require('../utility/loginchecker'); const {
isLoginLicensed,
LOGIN_LIMIT_ERROR,
markTokenAsLoggedIn,
markUserAsActive,
markLoginAsLoggedOut,
} = require('../utility/loginchecker');
const logger = getLogger('auth'); const logger = getLogger('auth');
@@ -79,7 +85,7 @@ function authMiddleware(req, res, next) {
try { try {
const decoded = jwt.verify(token, getTokenSecret()); const decoded = jwt.verify(token, getTokenSecret());
req.user = decoded; req.user = decoded;
storage.markUserAsActive(decoded.licenseUid); markUserAsActive(decoded.licenseUid, token);
return next(); return next();
} catch (err) { } catch (err) {
@@ -124,19 +130,23 @@ module.exports = {
message: 'Administration login successful', message: 'Administration login successful',
}); });
const licenseUid = `superadmin`;
const accessToken = jwt.sign(
{
login: 'superadmin',
permissions: await storage.loadSuperadminPermissions(),
roleId: -3,
licenseUid,
},
getTokenSecret(),
{
expiresIn: getTokenLifetime(),
}
);
markTokenAsLoggedIn(licenseUid, accessToken);
return { return {
accessToken: jwt.sign( accessToken,
{
login: 'superadmin',
permissions: await storage.loadSuperadminPermissions(),
roleId: -3,
licenseUid: `superadmin`,
},
getTokenSecret(),
{
expiresIn: getTokenLifetime(),
}
),
}; };
} }
@@ -192,5 +202,17 @@ module.exports = {
return tokenHolder; return tokenHolder;
}, },
logoutAdmin_meta: true,
async logoutAdmin() {
await markLoginAsLoggedOut('superadmin');
return true;
},
logoutUser_meta: true,
async logoutUser({}, req) {
await markLoginAsLoggedOut(req?.user?.licenseUid);
return true;
},
authMiddleware, authMiddleware,
}; };

View File

@@ -311,9 +311,11 @@ export async function doLogout() {
const category = getAuthCategory(config); const category = getAuthCategory(config);
if (category == 'admin') { if (category == 'admin') {
await apiCall('auth/logout-admin');
localStorage.removeItem('adminAccessToken'); localStorage.removeItem('adminAccessToken');
internalRedirectTo('/admin-login.html?is-admin=true'); internalRedirectTo('/admin-login.html?is-admin=true');
} else if (category == 'token') { } else if (category == 'token') {
await apiCall('auth/logout-user');
localStorage.removeItem('accessToken'); localStorage.removeItem('accessToken');
if (config.logoutUrl) { if (config.logoutUrl) {
window.location.href = config.logoutUrl; window.location.href = config.logoutUrl;