use of org.mx.comps.rbac.dal.entity.Role in project main by JohnPeng739.
the class RoleManageResource method deleteRole.
@Path("roles/{id}")
@DELETE
@AuthenticateAround(returnValueClass = DataVO.class)
public DataVO<RoleVO> deleteRole(@QueryParam("userCode") String userCode, @PathParam("id") String id) {
sessionDataStore.setCurrentUserCode(userCode);
try {
Role role = accessor.remove(id, Role.class);
RoleVO vo = RoleVO.transform(role, true);
sessionDataStore.removeCurrentUserCode();
return new DataVO<>(vo);
} catch (UserInterfaceException ex) {
return new DataVO<>(ex);
} catch (Exception ex) {
if (logger.isErrorEnabled()) {
logger.error("Delete role fail.", ex);
}
return new DataVO<>(new UserInterfaceSystemErrorException(UserInterfaceSystemErrorException.SystemErrors.SYSTEM_OTHER_FAIL));
}
}
use of org.mx.comps.rbac.dal.entity.Role in project main by JohnPeng739.
the class InitializeAdminAccountTask method createRole.
/**
* 初始化指定的角色
*
* @param accessor 实体访问器
* @param code 代码
* @param name 名称
* @param desc 描述
*/
private void createRole(GeneralDictAccessor accessor, String code, String name, String desc) {
Role role = accessor.getByCode(code, Role.class);
if (role == null) {
if (logger.isDebugEnabled()) {
logger.debug(String.format("The role for %s is not exist, will create it.", code));
}
role = EntityFactory.createEntity(Role.class);
role.setCode(code);
role.setName(name);
role.setDesc(desc);
accessor.save(role);
} else {
if (logger.isInfoEnabled()) {
logger.info(String.format("The role for %s has existed, this task will ignored.", code));
}
}
}
use of org.mx.comps.rbac.dal.entity.Role in project main by JohnPeng739.
the class TestAccount method testAccountRoles.
@Test
public void testAccountRoles() {
GeneralDictAccessor service = context.getBean("generalDictAccessor", GeneralDictAccessor.class);
assertNotNull(service);
AccountManageService accountService = context.getBean(AccountManageService.class);
assertNotNull(service);
UserManageService userManageService = context.getBean(UserManageService.class);
assertNotNull(userManageService);
RoleManageService roleManageService = context.getBean(RoleManageService.class);
assertNotNull(roleManageService);
try {
TestUser.testInsertUser(service, userManageService);
TestUser.testEditUser(service, userManageService);
assertEquals(3, service.count(User.class));
TestRole.testInsertRole(service, roleManageService);
TestRole.testEditRole(service, roleManageService);
testInsertAccount(service, accountService);
testEditAccount(service, accountService);
assertEquals(3, service.count(Role.class));
assertEquals(3, service.count(Account.class));
Account account1 = service.getById(account1Id, Account.class);
assertNotNull(account1);
assertTrue(account1.getRoles().isEmpty());
Role role1 = service.getById(TestRole.role1Id, Role.class);
Role role2 = service.getById(TestRole.role2Id, Role.class);
Role role3 = service.getById(TestRole.role3Id, Role.class);
assertNotNull(role1);
assertNotNull(role2);
assertNotNull(role3);
AccountManageService.AccountInfo accountInfo = AccountManageService.AccountInfo.valueOf(account1.getCode(), "", account1.getDesc(), account1.getId(), TestUser.johnId, Arrays.asList(role1.getId(), role2.getId(), role3.getId()), account1.isValid());
accountService.saveAccount(accountInfo);
assertEquals(3, service.count(Account.class));
account1 = service.getById(account1Id, Account.class);
assertNotNull(account1);
assertEquals(3, account1.getRoles().size());
assertEquals(new HashSet<>(Arrays.asList(role1, role2, role3)), account1.getRoles());
accountInfo = AccountManageService.AccountInfo.valueOf(account1.getCode(), "", account1.getDesc(), account1.getId(), TestUser.johnId, Arrays.asList(role1.getId(), role3.getId()), account1.isValid());
accountService.saveAccount(accountInfo);
assertEquals(3, service.count(Account.class));
account1 = service.getById(account1Id, Account.class);
assertNotNull(account1);
assertEquals(2, account1.getRoles().size());
assertEquals(new HashSet<>(Arrays.asList(role1, role3)), account1.getRoles());
accountInfo = AccountManageService.AccountInfo.valueOf(account1.getCode(), "", account1.getDesc(), account1.getId(), TestUser.johnId, Arrays.asList(), account1.isValid());
accountService.saveAccount(accountInfo);
account1 = service.getById(account1Id, Account.class);
assertNotNull(account1);
assertTrue(account1.getRoles().isEmpty());
} catch (Exception ex) {
ex.printStackTrace();
fail(ex.getMessage());
}
}
use of org.mx.comps.rbac.dal.entity.Role in project main by JohnPeng739.
the class TestAccredit method testAccredit.
@Test
public void testAccredit() {
GeneralDictAccessor service = context.getBean("generalDictAccessor", GeneralDictAccessor.class);
assertNotNull(service);
AccreditManageService accreditService = context.getBean(AccreditManageService.class);
assertNotNull(service);
UserManageService userManageService = context.getBean(UserManageService.class);
assertNotNull(userManageService);
AccountManageService accountManageService = context.getBean(AccountManageService.class);
assertNotNull(accountManageService);
RoleManageService roleManageService = context.getBean(RoleManageService.class);
assertNotNull(roleManageService);
try {
TestUser.testInsertUser(service, userManageService);
TestUser.testEditUser(service, userManageService);
assertEquals(3, service.count(User.class));
TestAccount.testInsertAccount(service, accountManageService);
TestAccount.testEditAccount(service, accountManageService);
TestRole.testInsertRole(service, roleManageService);
TestRole.testEditRole(service, roleManageService);
assertEquals(3, service.count(Account.class));
assertEquals(3, service.count(Role.class));
assertEquals(0, service.count(Accredit.class));
Account account1 = service.getById(TestAccount.account1Id, Account.class);
assertNotNull(account1);
Account account2 = service.getById(TestAccount.account2Id, Account.class);
assertNotNull(account2);
Role role1 = service.getById(TestRole.role1Id, Role.class);
assertNotNull(role1);
Role role2 = service.getById(TestRole.role2Id, Role.class);
assertNotNull(role2);
Role role3 = service.getById(TestRole.role3Id, Role.class);
assertNotNull(role3);
long startTime = new Date().getTime();
AccreditManageService.AccreditInfo accreditInfo;
// 测试没有设置源
try {
accreditInfo = AccreditManageService.AccreditInfo.valueOf("", TestAccount.account2Id, Arrays.asList(TestRole.role1Id, TestRole.role2Id, TestRole.role3Id), startTime, -1, "desc");
accreditService.accredit(accreditInfo);
fail("Here need a exception");
} catch (UserInterfaceSystemErrorException ex) {
assertEquals(UserInterfaceSystemErrorException.SystemErrors.SYSTEM_ILLEGAL_PARAM.getErrorCode(), ex.getErrorCode());
}
try {
accreditInfo = AccreditManageService.AccreditInfo.valueOf(TestAccount.account1Id, "", Arrays.asList(TestRole.role1Id, TestRole.role2Id, TestRole.role3Id), startTime, -1, "desc");
accreditService.accredit(accreditInfo);
fail("Here need a exception");
} catch (UserInterfaceSystemErrorException ex) {
assertEquals(UserInterfaceSystemErrorException.SystemErrors.SYSTEM_ILLEGAL_PARAM.getErrorCode(), ex.getErrorCode());
}
try {
accreditInfo = AccreditManageService.AccreditInfo.valueOf(TestAccount.account1Id, TestAccount.account2Id, null, startTime, -1, "desc");
accreditService.accredit(accreditInfo);
fail("Here need a exception");
} catch (UserInterfaceSystemErrorException ex) {
assertEquals(UserInterfaceSystemErrorException.SystemErrors.SYSTEM_ILLEGAL_PARAM.getErrorCode(), ex.getErrorCode());
}
try {
accreditInfo = AccreditManageService.AccreditInfo.valueOf(TestAccount.account1Id, TestAccount.account2Id, Arrays.asList(), startTime, -1, "desc");
accreditService.accredit(accreditInfo);
fail("Here need a exception");
} catch (UserInterfaceSystemErrorException ex) {
assertEquals(UserInterfaceSystemErrorException.SystemErrors.SYSTEM_ILLEGAL_PARAM.getErrorCode(), ex.getErrorCode());
}
try {
accreditInfo = AccreditManageService.AccreditInfo.valueOf("abcde", TestAccount.account2Id, Arrays.asList(TestRole.role1Id, TestRole.role2Id, TestRole.role3Id), startTime, -1, "desc");
accreditService.accredit(accreditInfo);
fail("Here need a exception");
} catch (UserInterfaceRbacErrorException ex) {
assertEquals(UserInterfaceRbacErrorException.RbacErrors.ACCOUNT_NOT_FOUND.getErrorCode(), ex.getErrorCode());
}
try {
accreditInfo = AccreditManageService.AccreditInfo.valueOf(TestAccount.account1Id, "abcde", Arrays.asList(TestRole.role1Id, TestRole.role2Id, TestRole.role3Id), startTime, -1, "desc");
accreditService.accredit(accreditInfo);
fail("Here need a exception");
} catch (UserInterfaceRbacErrorException ex) {
assertEquals(UserInterfaceRbacErrorException.RbacErrors.ACCOUNT_NOT_FOUND.getErrorCode(), ex.getErrorCode());
}
try {
accreditInfo = AccreditManageService.AccreditInfo.valueOf(TestAccount.account1Id, TestAccount.account2Id, Arrays.asList(TestRole.role1Id, "abcdef", TestRole.role3Id), startTime, -1, "desc");
accreditService.accredit(accreditInfo);
fail("Here need a exception");
} catch (UserInterfaceRbacErrorException ex) {
assertEquals(UserInterfaceRbacErrorException.RbacErrors.ROLE_NOT_FOUND.getErrorCode(), ex.getErrorCode());
}
// 测试正常授权
long endTime = new Date().getTime() + 500;
accreditInfo = AccreditManageService.AccreditInfo.valueOf(TestAccount.account1Id, TestAccount.account2Id, Arrays.asList(TestRole.role1Id, TestRole.role2Id, TestRole.role3Id), startTime, endTime, "desc");
Accredit accredit = accreditService.accredit(accreditInfo);
assertEquals(1, service.count(Accredit.class));
assertNotNull(accredit);
assertEquals(account1, accredit.getSrc());
assertEquals(account2, accredit.getTar());
assertEquals(new HashSet<>(Arrays.asList(role1, role2, role3)), accredit.getRoles());
assertEquals(startTime, accredit.getStartTime().getTime());
assertEquals(endTime, accredit.getEndTime().getTime());
assertTrue(accredit.isValid());
assertEquals("desc", accredit.getDesc());
accredit = service.getById(accredit.getId(), Accredit.class);
assertNotNull(accredit);
assertEquals(account1, accredit.getSrc());
assertEquals(account2, accredit.getTar());
assertEquals(new HashSet<>(Arrays.asList(role1, role2, role3)), accredit.getRoles());
assertEquals(startTime, accredit.getStartTime().getTime());
assertEquals(endTime, accredit.getEndTime().getTime());
assertTrue(accredit.isValid());
assertEquals("desc", accredit.getDesc());
// 测试重复授权
try {
accreditInfo = AccreditManageService.AccreditInfo.valueOf(TestAccount.account1Id, TestAccount.account2Id, Arrays.asList(TestRole.role1Id, TestRole.role3Id), startTime, -1, "desc");
accreditService.accredit(accreditInfo);
fail("Here need a exception");
} catch (UserInterfaceRbacErrorException ex) {
assertEquals(UserInterfaceRbacErrorException.RbacErrors.ACCREDIT_SAME_FOUND.getErrorCode(), ex.getErrorCode());
}
// 测试自动时间到达后关闭
Thread.sleep(600);
accreditInfo = AccreditManageService.AccreditInfo.valueOf(TestAccount.account1Id, TestAccount.account2Id, Arrays.asList(TestRole.role1Id, TestRole.role3Id), startTime, -1, "desc");
accredit = accreditService.accredit(accreditInfo);
assertEquals(2, service.count(Accredit.class));
assertEquals(2, service.count(Accredit.class, false));
accredit = service.getById(accredit.getId(), Accredit.class);
assertNotNull(accredit);
assertEquals(account1, accredit.getSrc());
assertEquals(account2, accredit.getTar());
assertEquals(new HashSet<>(Arrays.asList(role1, role3)), accredit.getRoles());
assertEquals(startTime, accredit.getStartTime().getTime());
assertNull(accredit.getEndTime());
assertTrue(accredit.isValid());
assertEquals("desc", accredit.getDesc());
// 测试关闭
accreditService.closeAccredit(accredit.getId());
assertEquals(1, service.count(Accredit.class));
assertEquals(2, service.count(Accredit.class, false));
// 再次授权
accreditInfo = AccreditManageService.AccreditInfo.valueOf(TestAccount.account1Id, TestAccount.account2Id, Arrays.asList(TestRole.role1Id, TestRole.role3Id), startTime, -1, "desc");
accredit = accreditService.accredit(accreditInfo);
assertEquals(2, service.count(Accredit.class));
assertEquals(3, service.count(Accredit.class, false));
assertNotNull(accredit);
accredit = service.getById(accredit.getId(), Accredit.class);
assertNotNull(accredit);
assertEquals(account1, accredit.getSrc());
assertEquals(account2, accredit.getTar());
assertEquals(new HashSet<>(Arrays.asList(role1, role3)), accredit.getRoles());
assertEquals(startTime, accredit.getStartTime().getTime());
assertNull(accredit.getEndTime());
assertTrue(accredit.isValid());
assertEquals("desc", accredit.getDesc());
} catch (Exception ex) {
ex.printStackTrace();
fail(ex.getMessage());
}
}
use of org.mx.comps.rbac.dal.entity.Role in project main by JohnPeng739.
the class RoleManageServiceCommonImpl method saveRole.
/**
* {@inheritDoc}
*
* @see RoleManageService#saveRole(RoleInfo)
*/
@Override
public Role saveRole(RoleInfo roleInfo) {
if (roleInfo == null) {
throw new UserInterfaceSystemErrorException(UserInterfaceSystemErrorException.SystemErrors.SYSTEM_ILLEGAL_PARAM);
}
String id = roleInfo.getRoleId();
Role role;
if (!StringUtils.isBlank(id)) {
role = accessor.getById(id, Role.class);
if (role == null) {
throw new UserInterfaceRbacErrorException(UserInterfaceRbacErrorException.RbacErrors.ROLE_NOT_FOUND);
}
} else {
role = EntityFactory.createEntity(Role.class);
}
role.setCode(roleInfo.getCode());
role.setName(roleInfo.getName());
role.setDesc(roleInfo.getDesc());
if (role.getAccounts() != null && !role.getAccounts().isEmpty()) {
role.getAccounts().clear();
}
if (roleInfo.getAccountIds() != null && !roleInfo.getAccountIds().isEmpty()) {
for (String accountId : roleInfo.getAccountIds()) {
Account account = accessor.getById(accountId, Account.class);
if (account == null) {
throw new UserInterfaceRbacErrorException(UserInterfaceRbacErrorException.RbacErrors.ACCOUNT_NOT_FOUND);
}
role.getAccounts().add(account);
}
}
if (role.getPrivileges() != null && !role.getPrivileges().isEmpty()) {
role.getPrivileges().clear();
for (String privilegeId : roleInfo.getPrivilegeIds()) {
Privilege privilege = accessor.getById(privilegeId, Privilege.class);
if (privilege == null) {
throw new UserInterfaceRbacErrorException(UserInterfaceRbacErrorException.RbacErrors.PRIVILEGE_NOT_FOUND);
}
role.getPrivileges().add(privilege);
}
}
role.setValid(roleInfo.isValid());
role = this.save(role);
if (operateLogService != null) {
operateLogService.writeLog(String.format("保存角色[code=%s, name=%s]信息成功。", roleInfo.getCode(), roleInfo.getName()));
}
return role;
}
Aggregations