Files
SMANAGE/_flask_backup/_ftd/TempLateAPI/UGM/Auth/SwitchRole.api
T
2026-06-16 11:55:14 +08:00

58 lines
1.6 KiB
Plaintext

from PDAPI import *
__metadata__ = {
"methods": ["POST"],
"blueprint": "UGM",
"permission": 1.0,
"attributes": [],
"limit": "5 per minute",
"form": [
{"Name": "RoleUUID", "Type": "str", "MaxLen": 36}
]
}
def HandleRequest(_CleanedData):
current_user = UGM.GetELTUser()
if not current_user:
return {"code": 401, "msg": "未登录"}, 401
role_uuid_str = _CleanedData["form"].get("RoleUUID", "").strip()
if not role_uuid_str:
return {"code": 400, "msg": "缺少角色UUID"}, 400
role_uuid_bytes = UUIDObj(role_uuid_str).bytes
user_role = UserRole.query.filter(
UserRole.UserUUID == current_user.UserUUID,
UserRole.RoleUUID == role_uuid_bytes
).first()
if not user_role:
return {"code": 403, "msg": "该角色不属于当前用户"}, 403
role = GERPRole.query.filter(GERPRole.RoleUUID == role_uuid_bytes).first()
if not role:
return {"code": 404, "msg": "角色不存在"}, 404
if role.RoleStatus != 1:
return {"code": 403, "msg": "角色已被禁用"}, 403
Cookie.set("CurrentRoleUUID", role_uuid_str, domain=".gvsds.com")
company = None
if role.CompanyUUID:
company = GERPCompany.query.filter(GERPCompany.CompanyUUID == role.CompanyUUID).first()
return {
"code": 0,
"msg": "角色切换成功",
"data": {
"RoleUUID": role_uuid_str,
"RoleName": role.RoleName,
"CompanyUUID": UUIDObj(role.CompanyUUID).UpperStr if role.CompanyUUID else None,
"CompanyName": company.CompanyName if company else None
}
}, 200