fix(login): link status ikut setting uptime_url + batas sesi per akun
- login.ejs: pakai settings.uptime_url (fallback status_url lama), sehingga tab Status tidak lagi hardcode status.skyfiber.qzz.io - sessionLimitService: rotasi session id saat login (anti fixation), catat sesi di tabel login_sessions, batas admin/kasir/teknisi/kolektor 2 per akun dan pelanggan 3 per akun; sesi tertua diputus dari store saat melebihi batas - hook login admin/kasir/teknisi/kolektor/pelanggan (direct & OTP) dan logout
This commit is contained in:
@@ -2,6 +2,7 @@ const express = require('express');
|
||||
const router = express.Router();
|
||||
const techSvc = require('../services/techService');
|
||||
const securityWatchdog = require('../services/securityWatchdogService');
|
||||
const sessionLimit = require('../services/sessionLimitService');
|
||||
const customerSvc = require('../services/customerService');
|
||||
const odpSvc = require('../services/odpService');
|
||||
const { getSetting, getNowLocal, getCurrentDateInTimezone, getNowLocalISO, formatDateLocal, getSettings, formatTimeLocal, parseDateInTimezone } = require('../config/settingsManager');
|
||||
@@ -155,7 +156,12 @@ router.post('/login', loginRateLimiter, express.urlencoded({ extended: true }),
|
||||
const tech = techSvc.authenticate(username, password);
|
||||
if (tech) {
|
||||
await securityWatchdog.recordAppLoginAttempt({ type: 'technician', username, ip, success: true });
|
||||
await sessionLimit.rotateSession(req);
|
||||
req.session.isTechnician = true;
|
||||
sessionLimit.registerLoginSession(req, {
|
||||
role: 'technician', accountId: tech.id, limit: 2,
|
||||
ip, userAgent: req.get('user-agent')
|
||||
});
|
||||
req.session.techId = tech.id;
|
||||
req.session.techName = tech.name;
|
||||
return res.redirect('/tech');
|
||||
@@ -171,6 +177,7 @@ router.post('/login', loginRateLimiter, express.urlencoded({ extended: true }),
|
||||
});
|
||||
|
||||
router.get('/logout', (req, res) => {
|
||||
sessionLimit.removeLoginSession(req);
|
||||
req.session.destroy();
|
||||
res.redirect('/tech/login');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user