Improved loadDefaultACL

This commit is contained in:
2024-12-27 13:32:12 +01:00
parent 771fc8675f
commit f7d11c297d
3 changed files with 32 additions and 9 deletions

View File

@@ -161,18 +161,23 @@ class CreateDatabase {
self::createEntityQueries($sql, $classes, $queries);
}
public static function loadDefaultACL(SQL $sql, array &$queries): void {
public static function loadDefaultACL(SQL $sql, array &$queries, ?array $classes = NULL): void {
$query = $sql->insert("ApiPermission", ["method", "groups", "description", "is_core"]);
foreach (Request::getApiEndpoints() as $reflectionClass) {
$className = $reflectionClass->getName();
if (("$className::hasConfigurablePermissions")()) {
$method = ("$className::getEndpoint")();
$groups = ("$className::getDefaultPermittedGroups")();
$description = ("$className::getDescription")();
$isCore = startsWith($className, "Core\\API\\");
$query->addRow($method, $groups, $description, $isCore);
if ($classes === NULL) {
$classes = Request::getApiEndpoints();
}
foreach ($classes as $class) {
if ($class instanceof \ReflectionClass) {
$className = $class->getName();
} else if (!is_string($class)) {
throw new \Exception("Cannot call loadDefaultACL() for type: " . get_class($class));
} else {
$className = $class;
}
("$className::loadDefaultACL")($query);
}
if ($query->hasRows()) {

View File

@@ -1,5 +1,6 @@
<?php
use Core\Configuration\CreateDatabase;
use Core\Driver\SQL\Column\DateTimeColumn;
use Core\Driver\SQL\Expression\CurrentTimeStamp;
use Core\Objects\DatabaseEntity\Session;
@@ -7,3 +8,8 @@ use Core\Objects\DatabaseEntity\Session;
$handler = Session::getHandler($sql);
$queries[] = $sql->alterTable($handler->getTableName())
->add(new DateTimeColumn($handler->getColumnName("lastOnline"), false, new CurrentTimeStamp()));
CreateDatabase::loadDefaultACL($sql, $queries, [
\Core\API\User\GetSessions::class,
\Core\API\User\DestroySession::class
]);