58 lines
1.6 KiB
Plaintext
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
|