use of com.serotonin.m2m2.vo.role.Role in project ma-core-public by infiniteautomation.
the class PermissionMigration method getOrCreatePermissionNoCache.
default MangoPermission getOrCreatePermissionNoCache(MangoPermission permission) {
if (permission.getId() != null) {
return permission;
}
return getTransactionTemplate().execute(tx -> {
Set<Integer> mintermIds = new HashSet<>();
Set<Set<Role>> minterms = new HashSet<>();
for (Set<Role> minterm : permission.getRoles()) {
Set<Role> savedRoles = new HashSet<>();
for (Role role : minterm) {
savedRoles.add(getOrCreateRole(role));
}
mintermIds.add(getOrCreateMinterm(savedRoles));
}
Integer id = getOrCreatePermission(mintermIds);
MangoPermission saved = new MangoPermission(minterms);
return saved.withId(id);
});
}
use of com.serotonin.m2m2.vo.role.Role in project ma-core-public by infiniteautomation.
the class LazyFieldJsonTest method testLazyPermissionFromJsonObject.
@Test
public void testLazyPermissionFromJsonObject() {
RoleService roleService = Common.getBean(RoleService.class);
PermissionService permissionService = Common.getBean(PermissionService.class);
Role role1 = roleService.insert(new RoleVO(Common.NEW_ID, "XID-1", "Role 1")).getRole();
Role role2 = roleService.insert(new RoleVO(Common.NEW_ID, "XID-2", "Role 2")).getRole();
LazyField<MangoPermission> permission = new LazyField<>(() -> MangoPermission.builder().minterm(role1, role2).build());
try (StringWriter stringWriter = new StringWriter()) {
JsonWriter writer = new JsonWriter(Common.JSON_CONTEXT, stringWriter);
JsonTypeWriter typeWriter = new JsonTypeWriter(Common.JSON_CONTEXT);
JsonValue value = typeWriter.writeObject(permission);
writer.setPrettyIndent(0);
writer.setPrettyOutput(true);
writer.writeObject(value);
String json = stringWriter.toString();
JsonTypeReader typeReader = new JsonTypeReader(json);
JsonValue read = typeReader.read();
JsonArray root = read.toJsonArray();
JsonReader reader = new JsonReader(Common.JSON_CONTEXT, root);
ImportContext context = new ImportContext(reader, new ProcessResult(), Common.getTranslations());
LazyField<MangoPermission> readPermission = new LazyField<>();
TypeDefinition lazyType = new TypeDefinition(LazyField.class, MangoPermission.class);
context.getReader().readInto(lazyType, readPermission, root);
assertEquals(permission.get(), readPermission.get());
} catch (IOException | JsonException e) {
e.printStackTrace();
fail(e.getMessage());
}
}
use of com.serotonin.m2m2.vo.role.Role in project ma-core-public by infiniteautomation.
the class SetPointEventHandlerServiceTest method createDataPoint.
DataPointVO createDataPoint(DataSourceVO dsVo, Set<Role> readRoles, Set<Role> setRoles) {
DataPointVO point = new DataPointVO();
point.setDataSourceId(dsVo.getId());
point.setName("permissions_test_datasource");
point.setReadPermission(MangoPermission.requireAnyRole(readRoles));
point.setSetPermission(MangoPermission.requireAnyRole(setRoles));
point.setPointLocator(new MockPointLocatorVO(DataType.NUMERIC, true));
point = dataPointService.insert(point);
return point;
}
use of com.serotonin.m2m2.vo.role.Role in project ma-core-public by infiniteautomation.
the class MailingListServiceTest method testRemoveRole.
@Test
public void testRemoveRole() {
MailingList vo = newVO(readUser);
Set<Role> editRoles = Collections.singleton(editRole);
vo.setEditPermission(MangoPermission.requireAnyRole(editRoles));
service.insert(vo);
roleService.delete(editRole.getXid());
vo.setEditPermission(MangoPermission.superadminOnly());
MailingList fromDb = service.get(vo.getId());
assertVoEqual(vo, fromDb);
}
use of com.serotonin.m2m2.vo.role.Role in project ma-core-public by infiniteautomation.
the class MailingListServiceTest method testAddOverprivledgedEditRole.
@Test(expected = PermissionException.class)
public void testAddOverprivledgedEditRole() {
MailingList vo = newVO(readUser);
Set<Role> editRoles = Collections.singleton(editRole);
vo.setEditPermission(MangoPermission.requireAnyRole(editRoles));
service.insert(vo);
MailingList fromDb = service.get(vo.getId());
assertVoEqual(vo, fromDb);
runAs.runAs(readUser, () -> {
service.update(vo.getXid(), vo);
});
}
Aggregations