feat: 重构管理员权限管理,移除 AdminPermission 模型,整合权限与角色管理逻辑,优化 API 接口以支持角色与权限的同步,增强数据库填充器以对齐权限配置
This commit is contained in:
67
app/Support/AdminPermissionBridge.php
Normal file
67
app/Support/AdminPermissionBridge.php
Normal file
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
namespace App\Support;
|
||||
|
||||
final class AdminPermissionBridge
|
||||
{
|
||||
/** @return array<string, list<string>> */
|
||||
public static function legacyMap(): array
|
||||
{
|
||||
/** @var array<string, list<string>> */
|
||||
return config('admin_permissions.legacy_map', []);
|
||||
}
|
||||
|
||||
/** @return list<string> */
|
||||
public static function allLegacySlugs(): array
|
||||
{
|
||||
$keys = array_keys(self::legacyMap());
|
||||
sort($keys);
|
||||
|
||||
return $keys;
|
||||
}
|
||||
|
||||
/** @return list<string> */
|
||||
public static function menuActionCodesForLegacy(string $legacySlug): array
|
||||
{
|
||||
return array_values(array_unique(self::legacyMap()[$legacySlug] ?? []));
|
||||
}
|
||||
|
||||
/**
|
||||
* 若管理员拥有的任意 menu_action.permission_code 落在某 `prd.*` 映射集合内,则视为拥有该 `prd.*`
|
||||
*(与路由中间件「满足其一」及 Next 侧栏 `requiredAny` 语义一致)。
|
||||
*
|
||||
* @param list<string> $menuActionCodes
|
||||
* @return list<string>
|
||||
*/
|
||||
public static function legacySlugsGrantedByMenuActionCodes(array $menuActionCodes): array
|
||||
{
|
||||
if ($menuActionCodes === []) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$set = [];
|
||||
foreach ($menuActionCodes as $code) {
|
||||
if (is_string($code) && $code !== '') {
|
||||
$set[$code] = true;
|
||||
}
|
||||
}
|
||||
if ($set === []) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$out = [];
|
||||
foreach (self::legacyMap() as $legacySlug => $requiredCodes) {
|
||||
foreach ($requiredCodes as $code) {
|
||||
if (isset($set[$code])) {
|
||||
$out[$legacySlug] = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$keys = array_keys($out);
|
||||
sort($keys);
|
||||
|
||||
return $keys;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user