> */ public static function legacyMap(): array { /** @var array> */ return config('admin_permissions.legacy_map', []); } /** @return list */ public static function allLegacySlugs(): array { $keys = array_keys(self::legacyMap()); sort($keys); return $keys; } /** @return list */ 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 $menuActionCodes * @return list */ 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; } }