isAuth = false; parent::__construct(); } /** * 获取当前启用的明文配置 * 为什么要解密:上传客户端需要明文 access/secret;库内仅存 AES 密文 * * @return array{ * id:int,driver:string,name:string,access_key:string,secret_key:string, * endpoint:string,region:string,bucket:string,domain:string, * path_prefix:string,extra_json:mixed * } */ public function getActiveConfig(): array { $sys = SystemConfigService::getInstance(); $activeId = (int) $sys->getValue(self::CFG_ACTIVE_ID, '0'); $row = null; if ($activeId > 0) { $row = OssConfigModel::where('id', $activeId) ->where('deleted_at', 0) ->where('status', 1) ->first(); } if (!$row) { // 回落 is_active 标记,避免仅写了表未写 system_config 时上传失败 $row = OssConfigModel::where('is_active', 1) ->where('deleted_at', 0) ->where('status', 1) ->orderByDesc('id') ->first(); } if (!$row) { // 最终回落本地默认行或内存默认 $row = OssConfigModel::where('driver', 'local') ->where('deleted_at', 0) ->where('status', 1) ->orderByDesc('is_active') ->orderBy('id') ->first(); } if (!$row) { return [ 'id' => 0, 'driver' => 'local', 'name' => '本地存储', 'access_key' => '', 'secret_key' => '', 'endpoint' => '', 'region' => '', 'bucket' => '', 'domain' => '', 'path_prefix' => 'uploads', 'extra_json' => null, ]; } $enc = FieldEncryptService::getInstance(); $extra = $row->extra_json; if (is_string($extra) && $extra !== '') { $decoded = json_decode($extra, true); $extra = is_array($decoded) ? $decoded : $extra; } return [ 'id' => (int) $row->id, 'driver' => (string) $row->driver, 'name' => (string) $row->name, 'access_key' => $enc->decryptFromStorage((string) ($row->access_key ?? ''), true), 'secret_key' => $enc->decryptFromStorage((string) ($row->secret_key ?? ''), true), 'endpoint' => (string) ($row->endpoint ?? ''), 'region' => (string) ($row->region ?? ''), 'bucket' => (string) ($row->bucket ?? ''), 'domain' => (string) ($row->domain ?? ''), 'path_prefix' => (string) ($row->path_prefix ?? ''), 'extra_json' => $extra, ]; } }