修复门禁:统一授权状态机与注销入口
This commit is contained in:
1 parent
ec3a7afe46
commit
a83a3a642e
9 files changed
+74
-134
No files matched your search
+5
-58
@@ -38,7 +38,7 @@ public class TrainDormAuthController extends BaseController
|
||||
/**
|
||||
* 查询宿舍权限分配列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:auth:list')")
|
||||
@PreAuthorize("@ss.hasPermi('train:access:query') or @ss.hasPermi('system:auth:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(TrainDormAuth trainDormAuth)
|
||||
{
|
||||
@@ -80,61 +80,8 @@ public class TrainDormAuthController extends BaseController
|
||||
return success(trainDormAuthService.selectTrainDormAuthByAccommodationId(accommodationId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增宿舍权限分配
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:auth:add')")
|
||||
@Log(title = "宿舍权限分配", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody TrainDormAuth trainDormAuth)
|
||||
{
|
||||
trainDormAuth.setCreateBy(getUsernameSafe());
|
||||
return toAjax(trainDormAuthService.insertTrainDormAuth(trainDormAuth));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改宿舍权限分配
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:auth:edit')")
|
||||
@Log(title = "宿舍权限分配", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody TrainDormAuth trainDormAuth)
|
||||
{
|
||||
trainDormAuth.setUpdateBy(getUsernameSafe());
|
||||
return toAjax(trainDormAuthService.updateTrainDormAuth(trainDormAuth));
|
||||
}
|
||||
|
||||
/**
|
||||
* 注销宿舍权限分配
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:auth:edit')")
|
||||
@Log(title = "宿舍权限分配-注销", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/{authId}/revoke")
|
||||
public AjaxResult revoke(@PathVariable("authId") Long authId)
|
||||
{
|
||||
return toAjax(trainDormAuthService.revokeAuth(authId, getUsernameSafe()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除宿舍权限分配
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:auth:remove')")
|
||||
@Log(title = "宿舍权限分配", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{authIds}")
|
||||
public AjaxResult remove(@PathVariable Long[] authIds)
|
||||
{
|
||||
return toAjax(trainDormAuthService.deleteTrainDormAuthByAuthIds(authIds));
|
||||
}
|
||||
|
||||
private String getUsernameSafe()
|
||||
{
|
||||
try
|
||||
{
|
||||
return SecurityUtils.getUsername();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return "admin";
|
||||
}
|
||||
}
|
||||
// 注意:Package A 架构整改:门禁授权的所有写操作(新增、修改、下发凭据、注销、删除)
|
||||
// 统一收归到 TrainAccessManagementController -> AccessAuthorizationOrchestrator -> DMS 权威调用链。
|
||||
// TrainDormAuthController 仅保留纯读取端点(list, export, getInfo, getInfoByAccommodationId)。
|
||||
}
|
||||
|
||||
+21
-9
@@ -2,6 +2,7 @@ package com.ruoyi.web.controller.train;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import org.junit.Test;
|
||||
@@ -116,15 +117,26 @@ public class AccommodationAndAuthApiControllerContractTest
|
||||
assertEquals("/accommodation/{accommodationId}", accInfoMethod.getAnnotation(GetMapping.class).value()[0]);
|
||||
assertEquals("@ss.hasPermi('system:auth:query')", accInfoMethod.getAnnotation(PreAuthorize.class).value());
|
||||
|
||||
// 4. POST /train/auth
|
||||
Method addMethod = clazz.getMethod("add", TrainDormAuth.class);
|
||||
assertNotNull(addMethod.getAnnotation(PostMapping.class));
|
||||
assertEquals("@ss.hasPermi('system:auth:add')", addMethod.getAnnotation(PreAuthorize.class).value());
|
||||
// 4. 验证 Package A 安全架构:TrainDormAuthController 彻底移除写端点 (add, edit, revoke, remove)
|
||||
try {
|
||||
clazz.getMethod("add", TrainDormAuth.class);
|
||||
fail("TrainDormAuthController 不得存在 POST add 写端点");
|
||||
} catch (NoSuchMethodException expected) {}
|
||||
|
||||
// 5. POST /train/auth/{authId}/revoke
|
||||
Method revokeMethod = clazz.getMethod("revoke", Long.class);
|
||||
assertNotNull(revokeMethod.getAnnotation(PostMapping.class));
|
||||
assertEquals("/{authId}/revoke", revokeMethod.getAnnotation(PostMapping.class).value()[0]);
|
||||
assertEquals("@ss.hasPermi('system:auth:edit')", revokeMethod.getAnnotation(PreAuthorize.class).value());
|
||||
try {
|
||||
clazz.getMethod("edit", TrainDormAuth.class);
|
||||
fail("TrainDormAuthController 不得存在 PUT edit 写端点");
|
||||
} catch (NoSuchMethodException expected) {}
|
||||
|
||||
try {
|
||||
clazz.getMethod("revoke", Long.class);
|
||||
fail("TrainDormAuthController 不得存在 POST revoke 写端点");
|
||||
} catch (NoSuchMethodException expected) {}
|
||||
|
||||
try {
|
||||
clazz.getMethod("remove", Long[].class);
|
||||
fail("TrainDormAuthController 不得存在 DELETE remove 写端点");
|
||||
} catch (NoSuchMethodException expected) {}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-6
@@ -258,12 +258,12 @@ public class PreCustomerStabilizationFinalFixesContractTest
|
||||
assertNotNull(accPre);
|
||||
assertEquals("@ss.hasPermi('train:accommodation:remove')", accPre.value());
|
||||
|
||||
// 门禁撤销
|
||||
Method authRevoke = TrainDormAuthController.class.getMethod("revoke", Long.class);
|
||||
assertNotNull(authRevoke);
|
||||
PreAuthorize authRevokePre = authRevoke.getAnnotation(PreAuthorize.class);
|
||||
assertNotNull(authRevokePre);
|
||||
assertEquals("@ss.hasPermi('system:auth:edit')", authRevokePre.value());
|
||||
// 门禁撤销:TrainDormAuthController 彻底移除写接口 revoke,收归至 TrainAccessManagementController
|
||||
try {
|
||||
TrainDormAuthController.class.getMethod("revoke", Long.class);
|
||||
fail("TrainDormAuthController 不得存在 revoke 写接口");
|
||||
} catch (NoSuchMethodException expected) {}
|
||||
|
||||
|
||||
// 成绩删除
|
||||
Method scoreRemove = TrainScoreInfoController.class.getMethod("remove", Long[].class);
|
||||
|
||||
Reference in new issue
Block a user