feat: implement role-based access control (RBAC) management system with Keycloak integration and dynamic page permission configuration
This commit is contained in:
No files matched your search
@@ -0,0 +1,39 @@
|
||||
const fs = require('fs');
|
||||
const navContent = fs.readFileSync('stores/navItems1.ts', 'utf-8');
|
||||
const keys = [...navContent.matchAll(/menuKey:\s*['"]([^'"]+)['"]/g)].map(m => m[1]);
|
||||
|
||||
console.log('Extracted keys:', keys);
|
||||
|
||||
const data = JSON.parse(fs.readFileSync('data/mock/hakAkses.json', 'utf-8'));
|
||||
|
||||
const menus = keys.map(k => ({
|
||||
menuKey: k,
|
||||
name: k,
|
||||
canAccess: true,
|
||||
canView: true,
|
||||
canAdd: true,
|
||||
canEdit: true,
|
||||
canDelete: true
|
||||
}));
|
||||
|
||||
const usernameOverrides = ['[email protected]', 'akbar44', 'Akbar Attallah'];
|
||||
|
||||
for (const user of usernameOverrides) {
|
||||
const existing = data.find(d => d.namaTipeUser === user || d.namaHakAkses === user);
|
||||
if (existing) {
|
||||
existing.hakAksesMenu = menus;
|
||||
existing.namaTipeUser = user;
|
||||
} else {
|
||||
data.push({
|
||||
id: require('crypto').randomUUID(),
|
||||
namaHakAkses: user,
|
||||
namaTipeUser: user,
|
||||
status: 'aktif',
|
||||
isGroupBased: false,
|
||||
hakAksesMenu: menus
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
fs.writeFileSync('data/mock/hakAkses.json', JSON.stringify(data, null, 4));
|
||||
console.log('Granted full access to ' + usernameOverrides.join(', '));
|
||||
Reference in New Issue
Block a user