25 lines
1.2 KiB
Plaintext
25 lines
1.2 KiB
Plaintext
# api/pbl_domain_ref_check_access.dspy — 契约端点:check_ref_access(设计 §3.2 接口 10)
|
||
# 实现:pbl_domain_ext/api.py:check_ref_access(env.pbl_check_ref_access)
|
||
# 出参:bool(租户+班级+团队三重匹配;不抛异常,供运行时热路径判定 F-RT-02)
|
||
debug('pbl_domain_ref_check_access.dspy: START params_kw=%s' % dict(params_kw))
|
||
|
||
try:
|
||
_allowed = await pbl_check_ref_access(
|
||
params_kw.get('ref_type'),
|
||
params_kw.get('ref_id'),
|
||
params_kw.get('tenant_id'),
|
||
class_id=params_kw.get('class_id'),
|
||
team_id=params_kw.get('team_id'),
|
||
)
|
||
debug('pbl_domain_ref_check_access.dspy: OK allowed=%s' % _allowed)
|
||
return {'success': True, 'error_code': None, 'message': 'ok',
|
||
'data': {'allowed': bool(_allowed)},
|
||
'allowed': bool(_allowed),
|
||
'http_status': 200 if _allowed else 403}
|
||
except Exception as exc:
|
||
_code = getattr(exc, 'code', None) or 'PBL_E_INTERNAL'
|
||
_msg = getattr(exc, 'message', None) or str(exc)
|
||
debug('pbl_domain_ref_check_access.dspy: FAIL code=%s msg=%s' % (_code, _msg))
|
||
return {'success': False, 'error_code': _code, 'message': _msg,
|
||
'data': {'allowed': False}, 'allowed': False, 'http_status': 500}
|