FleetCart/Modules/User/Repositories/Permission.php

97 lines
2.2 KiB
PHP
Raw Normal View History

2023-06-11 12:14:03 +00:00
<?php
namespace Modules\User\Repositories;
use Nwidart\Modules\Facades\Module;
class Permission
{
/**
* Get the permissions from all the enabled modules.
*
* @return array
*/
public static function all()
{
return static::getEnabledModulePermissions() + static::getActiveThemePermissions();
}
/**
* Get enabled module permissions.
*
* @return array
*/
private static function getEnabledModulePermissions()
{
$permissions = [];
foreach (Module::allEnabled() as $module) {
$config = config('fleetcart.modules.' . strtolower($module->getName()) . '.permissions');
if (! is_null($config)) {
$permissions[$module->getName()] = $config;
}
}
return $permissions;
}
/**
* Get active theme permissions.
*
* @return array
*/
private static function getActiveThemePermissions()
{
$permissions = config('fleetcart.themes.' . strtolower(setting('active_theme')) . '.permissions');
if (is_null($permissions)) {
return [];
}
return [setting('active_theme') => $permissions];
}
/**
* Prepare given permissions.
*
* @param array $permissions
* @return string
*/
public static function prepare(array $permissions)
{
$preparedPermissions = [];
foreach ($permissions as $name => $value) {
if (is_null($value) || is_bool($value)) {
$preparedPermissions[$name] = $value;
continue;
}
if (! is_null(static::value($value))) {
$preparedPermissions[$name] = static::value($value);
}
}
return json_encode($preparedPermissions);
}
/**
* Get the permission value.
*
* @param $permission
* @return bool|null
*/
protected static function value($permission)
{
if ($permission === '1') {
return true;
}
if ($permission === '-1') {
return false;
}
}
}