feat: actionable metrics, LDAP log parsing, UI updates
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
'use strict';
|
||||
|
||||
const router = require('express').Router();
|
||||
const { Resource, ResourceGroup } = require('../models/resource');
|
||||
|
||||
// GET /api/discovery/me
|
||||
// Returns the list of resources the current user has access to.
|
||||
router.get('/me', async (req, res, next) => {
|
||||
try {
|
||||
const userGroups = req.user.groups || []; // array of LDAP group CNs
|
||||
const accessibleResourceIds = new Set();
|
||||
|
||||
if (req.user.isMachine) {
|
||||
// Machines only have access to themselves by default
|
||||
accessibleResourceIds.add(req.resourceId);
|
||||
} else {
|
||||
// End users get access via groups
|
||||
const allGroups = await ResourceGroup.list();
|
||||
for (const rg of allGroups) {
|
||||
if (userGroups.includes(rg.groupCn)) {
|
||||
accessibleResourceIds.add(rg.resourceId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fetch all resources and filter
|
||||
const allResources = await Resource.list();
|
||||
const accessible = allResources.filter(r => accessibleResourceIds.has(r.id) || r.metadata?.isPublic);
|
||||
|
||||
res.json({ results: accessible });
|
||||
} catch (err) {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user