优化
This commit is contained in:
@@ -131,6 +131,7 @@ export async function run(context) {
|
||||
if (!warehouse) throw new Error('缺少启用的平台国内仓,整柜验收无法继续')
|
||||
const warehouseId = id(warehouse.id)
|
||||
const containerNo = `DCA${marker}`.slice(0, 32).toUpperCase()
|
||||
if (context.options?.fixedCustomerId) await verifyPermissionDenial(context, marker, warehouseId, containerNo)
|
||||
const now = new Date().toISOString().slice(0, 19)
|
||||
|
||||
await verifyValidationBoundaries(context, warehouseId, marker, now)
|
||||
@@ -222,11 +223,38 @@ export async function run(context) {
|
||||
|
||||
await verifyExtendedInventoryScenarios(context, warehouseId, marker, now)
|
||||
|
||||
await verifyPermissionDenial(context, marker, warehouseId, containerNo)
|
||||
if (!context.options?.fixedCustomerId) await verifyPermissionDenial(context, marker, warehouseId, containerNo)
|
||||
context.createdResources.domesticContainer = { warehouseId, inventoryId, containerNo, permissions: PERMISSIONS }
|
||||
}
|
||||
|
||||
async function verifyPermissionDenial(context, marker, warehouseId, containerNo) {
|
||||
export async function verifyPermissionDenial(context, marker, warehouseId, containerNo) {
|
||||
if (context.options?.fixedCustomerId) {
|
||||
const actor = context.options.fixedDomesticDenyActor
|
||||
if (!actor?.username || !actor.password || !/^[1-9]\d*$/.test(id(actor.membershipId))) {
|
||||
throw Error('缺少固定整柜权限拒绝账号,禁止自动创建用户或角色')
|
||||
}
|
||||
let user
|
||||
for (let page = 1; ; page++) {
|
||||
const response = await context.request('GET', `/api/platform/v1/iam/users?page=${page}&size=100&keyword=${encodeURIComponent(actor.username)}`)
|
||||
const result = context.apiSuccess(MODULE, '查询固定权限拒绝账号', response)
|
||||
user = result?.records?.find(item => id(item.membershipId) === id(actor.membershipId) && item.username === actor.username)
|
||||
if (user || !result?.records?.length || page * Number(result.size || 100) >= Number(result.total || 0)) break
|
||||
}
|
||||
if (user?.status !== 'ACTIVE' || id(user.tenantId) !== '0') throw Error('固定权限拒绝账号必须为启用的平台账号')
|
||||
const login = await context.request('POST', '/api/auth/login', { loginId: actor.username, password: actor.password }, '')
|
||||
const session = context.apiSuccess(MODULE, '登录固定权限拒绝账号', login)
|
||||
if (!session?.accessToken || !session.refreshToken) throw Error('固定权限拒绝账号未返回完整会话')
|
||||
try {
|
||||
const denied = await context.request('GET', `${BASE}/inventories?page=1&size=20&warehouseId=${warehouseId}&containerNo=${containerNo}`, undefined, session.accessToken)
|
||||
expectCode(context, '固定无整柜权限用户被拒绝', denied, 'A0403')
|
||||
if (denied.http !== 200 || String(denied.body?.code) !== 'A0403') throw Error('固定探针账号实际权限不符,停止整柜造数')
|
||||
} finally {
|
||||
const logout = await context.request('POST', '/api/auth/logout', { refreshToken: session.refreshToken }, session.accessToken)
|
||||
context.apiSuccess(MODULE, '退出固定权限拒绝账号会话,不停用账号或角色', logout)
|
||||
if (!succeeded(logout)) throw Error('固定权限拒绝账号退出失败')
|
||||
}
|
||||
return
|
||||
}
|
||||
const phone = await context.findAvailablePhone(MODULE)
|
||||
const roleCode = `DC_DENY_${marker}`.slice(0, 64)
|
||||
const username = `dc_deny_${marker}`.slice(0, 64).toLowerCase()
|
||||
|
||||
Reference in New Issue
Block a user