from PDAPI import * from Utils.Lib import PermissionVerifier __metadata__ = { "route": "{DEFAULT_ROUTE}/", "methods": ["GET"], "blueprint": "GERP", "permission": 0, "attributes": [], "limit": "30 per minute", } def HandleRequest(_CleanedData): sha1 = _CleanedData["params"].get("sha1", "").strip() if not sha1 or len(sha1) != 40: return {"code": 1, "msg": "无效的SHA1"}, 400 asset = GERPFileAsset.query.filter(GERPFileAsset.FileSHA1 == sha1).first() if not asset: return {"code": 404, "msg": "文件不存在"}, 404 if asset.CompanyUUID: current_user = UGM.GetELTUser() if not current_user: return {"code": 401, "msg": "未登录"}, 401 if not PermissionVerifier(3.0, ["admin:fileasset_link"]): return {"code": 403, "msg": "无文件资产链接查看权限"}, 403 current_role_uuid_str = flask.request.cookies.get("CurrentRoleUUID") if current_role_uuid_str: try: role_uuid_bytes = UUIDObj(current_role_uuid_str).bytes current_role = GERPRole.query.filter(GERPRole.RoleUUID == role_uuid_bytes).first() if not current_role or not current_role.CompanyUUID or current_role.CompanyUUID != asset.CompanyUUID: return {"code": 403, "msg": "无权访问其他公司的文件"}, 403 except: return {"code": 403, "msg": "无权访问此文件"}, 403 else: return {"code": 403, "msg": "无权访问此文件"}, 403 ref_link = f"https://api.gvsds.com/Asset/Download/{sha1}" markdown_link = f"![{asset.FileName}]({ref_link})" html_link = f'{asset.FileName}' return { "code": 0, "data": { "sha1": asset.FileSHA1, "fileName": asset.FileName, "fileSize": asset.FileSize, "mimeType": asset.MimeType, "refLink": ref_link, "markdownLink": markdown_link, "htmlLink": html_link, "refCount": asset.RefCount, } }, 200