Add session manager ui

This commit is contained in:
KernelDeimos
2024-04-11 00:29:39 -04:00
parent 18b3e06fe8
commit 09bf422686
7 changed files with 270 additions and 4 deletions
+1 -1
View File
@@ -90,7 +90,7 @@ router.post('/login', express.json(), body_parser_error_handler, async (req, res
// check password
if(await bcrypt.compare(req.body.password, user.password)){
const svc_auth = req.services.get('auth');
const token = await svc_auth.create_session_token(user);
const token = await svc_auth.create_session_token(user, { req });
//set cookie
// res.cookie(config.cookie_name, token);
res.cookie(config.cookie_name, token, {
+3 -1
View File
@@ -247,7 +247,9 @@ module.exports = eggspress(['/signup'], {
);
// create token for login
const token = await svc_auth.create_session_token(user);
const token = await svc_auth.create_session_token(user, {
req,
});
// jwt.sign({uuid: user_uuid}, config.jwt_secret);
//-------------------------------------------------------------
@@ -174,6 +174,44 @@ class AuthService extends BaseService {
async create_session_ (user, meta = {}) {
this.log.info(`CREATING SESSION`);
if ( meta.req ) {
const req = meta.req;
delete meta.req;
const ip = this.global_config.fowarded
? req.headers['x-forwarded-for'] ||
req.connection.remoteAddress
: req.connection.remoteAddress
;
meta.ip = ip;
meta.server = this.global_config.server_id;
if ( req.headers['user-agent'] ) {
meta.user_agent = req.headers['user-agent'];
}
if ( req.headers['referer'] ) {
meta.referer = req.headers['referer'];
}
if ( req.headers['origin'] ) {
const origin = this._origin_from_url(req.headers['origin']);
if ( origin ) {
meta.origin = origin;
}
}
if ( req.headers['host'] ) {
const host = this._origin_from_url(req.headers['host']);
if ( host ) {
meta.host = host;
}
}
}
const uuid = this.modules.uuidv4();
await this.db.write(
'INSERT INTO `sessions` ' +
@@ -197,6 +235,8 @@ class AuthService extends BaseService {
[uuid],
);
session.meta = JSON.parse(session.meta ?? {});
return session;
}
@@ -214,7 +254,7 @@ class AuthService extends BaseService {
return token;
}
async check_session (cur_token) {
async check_session (cur_token, meta) {
const decoded = this.modules.jwt.verify(
cur_token, this.global_config.jwt_secret
);
@@ -245,7 +285,7 @@ class AuthService extends BaseService {
// Upgrade legacy token
// TODO: phase this out
const { token } = await this.create_session_token(user);
const { token } = await this.create_session_token(user, meta);
return { user, token };
}
@@ -318,6 +358,7 @@ class AuthService extends BaseService {
if ( session.uuid === actor.type.session ) {
session.current = true;
}
session.meta = JSON.parse(session.meta ?? {});
});
return sessions;