fix: make phase 5 permission validation mysql compatible
This commit is contained in:
@@ -16633,6 +16633,9 @@ DROP PROCEDURE IF EXISTS assert_phase5_delivery_permissions;
|
|||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE PROCEDURE assert_phase5_delivery_permissions()
|
CREATE PROCEDURE assert_phase5_delivery_permissions()
|
||||||
BEGIN
|
BEGIN
|
||||||
|
DECLARE v_warehouse_operator_permission_count INT DEFAULT 0;
|
||||||
|
DECLARE v_warehouse_tally_permission_count INT DEFAULT 0;
|
||||||
|
|
||||||
IF (SELECT COUNT(*) FROM iam_permission
|
IF (SELECT COUNT(*) FROM iam_permission
|
||||||
WHERE tenant_id=0 AND status='ACTIVE' AND deleted=0
|
WHERE tenant_id=0 AND status='ACTIVE' AND deleted=0
|
||||||
AND permission_code IN (
|
AND permission_code IN (
|
||||||
@@ -16661,8 +16664,12 @@ BEGIN
|
|||||||
'platform:overseas-warehouse:delivery:list')) <> 7 THEN
|
'platform:overseas-warehouse:delivery:list')) <> 7 THEN
|
||||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:平台管理员授权不完整';
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:平台管理员授权不完整';
|
||||||
END IF;
|
END IF;
|
||||||
IF (SELECT COUNT(*) FROM tmp_phase5_delivery_role_permission WHERE role_code='WAREHOUSE_OPERATOR') <> 7
|
SELECT COALESCE(SUM(role_code='WAREHOUSE_OPERATOR'),0),
|
||||||
OR (SELECT COUNT(*) FROM tmp_phase5_delivery_role_permission WHERE role_code='WAREHOUSE_TALLY') <> 2 THEN
|
COALESCE(SUM(role_code='WAREHOUSE_TALLY'),0)
|
||||||
|
INTO v_warehouse_operator_permission_count, v_warehouse_tally_permission_count
|
||||||
|
FROM tmp_phase5_delivery_role_permission;
|
||||||
|
IF v_warehouse_operator_permission_count <> 7
|
||||||
|
OR v_warehouse_tally_permission_count <> 2 THEN
|
||||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:仓库岗位最小权限矩阵异常';
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:仓库岗位最小权限矩阵异常';
|
||||||
END IF;
|
END IF;
|
||||||
IF EXISTS (SELECT 1 FROM iam_role_permission grant_row
|
IF EXISTS (SELECT 1 FROM iam_role_permission grant_row
|
||||||
|
|||||||
@@ -133,6 +133,9 @@ DROP PROCEDURE IF EXISTS assert_phase5_delivery_permissions;
|
|||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE PROCEDURE assert_phase5_delivery_permissions()
|
CREATE PROCEDURE assert_phase5_delivery_permissions()
|
||||||
BEGIN
|
BEGIN
|
||||||
|
DECLARE v_warehouse_operator_permission_count INT DEFAULT 0;
|
||||||
|
DECLARE v_warehouse_tally_permission_count INT DEFAULT 0;
|
||||||
|
|
||||||
IF (SELECT COUNT(*) FROM iam_permission
|
IF (SELECT COUNT(*) FROM iam_permission
|
||||||
WHERE tenant_id=0 AND status='ACTIVE' AND deleted=0
|
WHERE tenant_id=0 AND status='ACTIVE' AND deleted=0
|
||||||
AND permission_code IN (
|
AND permission_code IN (
|
||||||
@@ -161,8 +164,12 @@ BEGIN
|
|||||||
'platform:overseas-warehouse:delivery:list')) <> 7 THEN
|
'platform:overseas-warehouse:delivery:list')) <> 7 THEN
|
||||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:平台管理员授权不完整';
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:平台管理员授权不完整';
|
||||||
END IF;
|
END IF;
|
||||||
IF (SELECT COUNT(*) FROM tmp_phase5_delivery_role_permission WHERE role_code='WAREHOUSE_OPERATOR') <> 7
|
SELECT COALESCE(SUM(role_code='WAREHOUSE_OPERATOR'),0),
|
||||||
OR (SELECT COUNT(*) FROM tmp_phase5_delivery_role_permission WHERE role_code='WAREHOUSE_TALLY') <> 2 THEN
|
COALESCE(SUM(role_code='WAREHOUSE_TALLY'),0)
|
||||||
|
INTO v_warehouse_operator_permission_count, v_warehouse_tally_permission_count
|
||||||
|
FROM tmp_phase5_delivery_role_permission;
|
||||||
|
IF v_warehouse_operator_permission_count <> 7
|
||||||
|
OR v_warehouse_tally_permission_count <> 2 THEN
|
||||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:仓库岗位最小权限矩阵异常';
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:仓库岗位最小权限矩阵异常';
|
||||||
END IF;
|
END IF;
|
||||||
IF EXISTS (SELECT 1 FROM iam_role_permission grant_row
|
IF EXISTS (SELECT 1 FROM iam_role_permission grant_row
|
||||||
|
|||||||
+17
@@ -58,6 +58,23 @@ class Phase5DeliveryPermissionSqlContractTest {
|
|||||||
"('CN_FIRSTLEG_PDA_OPERATOR','platform:overseas-warehouse:");
|
"('CN_FIRSTLEG_PDA_OPERATOR','platform:overseas-warehouse:");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void validatesTheWarehouseRoleMatrixWithOneTemporaryTableReadPerStatement() throws Exception {
|
||||||
|
String sql = sql();
|
||||||
|
|
||||||
|
assertThat(sql).contains(
|
||||||
|
"DECLARE v_warehouse_operator_permission_count INT DEFAULT 0",
|
||||||
|
"DECLARE v_warehouse_tally_permission_count INT DEFAULT 0",
|
||||||
|
"SELECT COALESCE(SUM(role_code='WAREHOUSE_OPERATOR'),0)",
|
||||||
|
"COALESCE(SUM(role_code='WAREHOUSE_TALLY'),0)",
|
||||||
|
"INTO v_warehouse_operator_permission_count, v_warehouse_tally_permission_count",
|
||||||
|
"IF v_warehouse_operator_permission_count <> 7",
|
||||||
|
"OR v_warehouse_tally_permission_count <> 2 THEN");
|
||||||
|
assertThat(sql).doesNotContain(
|
||||||
|
"IF (SELECT COUNT(*) FROM tmp_phase5_delivery_role_permission",
|
||||||
|
"OR (SELECT COUNT(*) FROM tmp_phase5_delivery_role_permission");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void grantsOnlyTheDefaultCustomerAdministratorAutomatically() throws Exception {
|
void grantsOnlyTheDefaultCustomerAdministratorAutomatically() throws Exception {
|
||||||
String sql = sql();
|
String sql = sql();
|
||||||
|
|||||||
Reference in New Issue
Block a user