dev(extensions): event for extensions to grant permst

This commit is contained in:
KernelDeimos
2025-10-01 16:46:59 -04:00
parent 574088ea55
commit 9946d2ffc5
2 changed files with 40 additions and 0 deletions

View File

@@ -67,3 +67,11 @@ extension.on('create.drivers', event => {
},
});
});
/**
* Here we specify that both registered and temporary users are allowed
* to access the `no-frills` implementation of the `hello-world` driver.
*/
extension.on('create.permissions', event => {
event.grant_to_everyone('service:no-frills:ii:hello-world');
});

View File

@@ -18,6 +18,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const APIError = require('../../api/APIError');
const { hardcoded_user_group_permissions } = require('../../data/hardcoded-permissions.js');
const { ECMAP } = require('../../filesystem/ECMAP');
const { get_user, get_app } = require('../../helpers');
const { reading_has_terminal } = require('../../unstructured/permission-scan-lib');
@@ -71,6 +72,37 @@ class PermissionService extends BaseService {
this.kvAvgTimes = { count: 0, avg: 0, max: 0 };
this.dbAvgTimes = { count: 0, avg: 0, max: 0 };
}
async ['__on_boot.consolidation'] () {
const svc_event = this.services.get('event');
// Event to allow extensions to add permissions
{
const event = {};
event.grant_to_everyone = permission => {
/* eslint-disable */
hardcoded_user_group_permissions
.system
[this.global_config.default_temp_group]
[permission]
= {};
hardcoded_user_group_permissions
.system
[this.global_config.default_user_group]
[permission]
= {};
/* eslint-enable */
};
event.grant_to_users = permission => {
/* eslint-disable */
hardcoded_user_group_permissions
[this.global_config.default_user_group]
[permission]
= {};
/* eslint-enable */
};
svc_event.emit('create.permissions', event);
}
}
/**
* Rewrites the given permission string based on registered PermissionRewriters.