rbac and licenses

This commit is contained in:
root
2026-05-01 22:37:21 +02:00
parent e208ef1759
commit f09f148aea
14 changed files with 326 additions and 80 deletions

View File

@@ -313,8 +313,8 @@ class PluginManager {
permissions: [
{
scope: name, // Plugin Scope (default = plugin name)
action: "Default_Access",
resource: "MenuItem"
resource: "Plugin",
action: "Default_Access"
}
]
}

View File

@@ -424,6 +424,12 @@ async removeRoleFromUser(authId, roleId) {
// =========================================================
// 🔐 PERMISSION CRUD
// =========================================================
async getPermission() {
const permission = this.db.get('permissionModel');
console.log(permission)
return await permission.findAll({ raw: true }) || [];
}
async createPermission(data) {
const Permission = this.db.get('permissionModel');

View File

@@ -75,26 +75,40 @@ class VaultifyManager {
// =========================================================
verify(record) {
try {
const payload = this.parsePayload(record.Payload);
const data = {
Customer_ID: record.Customer_ID,
Feature: record.Feature,
Payload: this.parsePayload(record.Payload),
ExpiresAt: record.ExpiresAt
Payload: payload,
ExpiresAt: record.ExpiresAt ?? null
};
const verifier = crypto.createVerify('RSA-SHA256');
verifier.update(JSON.stringify(data));
verifier.end();
return verifier.verify(
const isValid = verifier.verify(
this.publicKey,
record.Signature,
'base64'
);
if (!isValid) return false;
// 🔥 WICHTIG: Ablaufdatum HIER erzwingen
if (payload.expiresAt && record.ExpiresAt) {
if (payload.expiresAt !== record.ExpiresAt) {
return false;
}
}
if (record.ExpiresAt && new Date(record.ExpiresAt) < new Date()) {
return false;
}
return true;
} catch {
return false;
}