use of com.haulmont.cuba.security.entity.Role in project cuba by cuba-platform.
the class TestUserSessionSource method getUserSession.
@Override
public synchronized UserSession getUserSession() {
if (exceptionOnGetUserSession) {
throw new NoUserSessionException(UUID.fromString(USER_ID));
}
if (session == null) {
User user = new User();
user.setId(UUID.fromString(USER_ID));
user.setLogin("test_admin");
user.setName("Test Administrator");
user.setPassword(DigestUtils.md5Hex("test_admin"));
session = new UserSession(UUID.randomUUID(), user, Collections.<Role>emptyList(), Locale.forLanguageTag("en"), false);
}
return session;
}
use of com.haulmont.cuba.security.entity.Role in project cuba by cuba-platform.
the class UpdateDetachedTest method testDataService.
@Test
public void testDataService() throws Exception {
Permission p;
DataService ds = AppBeans.get(DataService.NAME);
LoadContext<Permission> ctx = new LoadContext<>(Permission.class);
ctx.setId(permissionId);
ctx.setView(new View(Permission.class).addProperty("target").addProperty("role", new View(Role.class).addProperty("name")));
p = ds.load(ctx);
assertNotNull(p);
p.setTarget("newTarget");
CommitContext commitCtx = new CommitContext(Collections.singleton(p));
Set<Entity> entities = ds.commit(commitCtx);
Permission result = null;
for (Entity entity : entities) {
if (entity.equals(p))
result = (Permission) entity;
}
result = reserialize(result);
assertTrue(PersistenceHelper.isDetached(result));
assertNotNull(result.getRole());
assertTrue(PersistenceHelper.isDetached(result.getRole()));
assertTrue(PersistenceHelper.isLoaded(result, "role"));
}
use of com.haulmont.cuba.security.entity.Role in project cuba by cuba-platform.
the class EntityManagerTest method testMergeWithOneToManyCollection.
@Test
public void testMergeWithOneToManyCollection() throws Exception {
User user = null;
UserRole userRole1 = null, userRole2 = null;
Role role1 = null, role2 = null;
try {
// creates user with one role
Transaction tx = cont.persistence().createTransaction();
try {
EntityManager em = cont.persistence().getEntityManager();
user = new User();
user.setName("testMerge1");
user.setLogin("testMerge1");
user.setPassword("testMerge1");
user.setGroup(em.getReference(Group.class, groupId));
em.persist(user);
role1 = new Role();
role1.setName("role1");
em.persist(role1);
role2 = new Role();
role2.setName("role2");
em.persist(role2);
userRole1 = new UserRole();
userRole1.setRole(role1);
userRole1.setUser(user);
em.persist(userRole1);
tx.commit();
} finally {
tx.end();
}
// creates new user role and merge it
tx = cont.persistence().createTransaction();
try {
EntityManager em = cont.persistence().getEntityManager();
userRole2 = new UserRole();
userRole2.setRole(role2);
userRole2.setUser(user);
em.merge(userRole2);
tx.commit();
} finally {
tx.end();
}
// check user versions, version shouldn't be changed
tx = cont.persistence().createTransaction();
try {
EntityManager em = cont.persistence().getEntityManager();
assertEquals((Integer) 1, em.find(User.class, user.getId()).getVersion());
tx.commit();
} finally {
tx.end();
}
} finally {
cont.deleteRecord(userRole1);
cont.deleteRecord(userRole2);
cont.deleteRecord(user);
cont.deleteRecord(role1);
cont.deleteRecord(role2);
}
}
use of com.haulmont.cuba.security.entity.Role in project cuba by cuba-platform.
the class SystemInfoWindow method generateInsert.
public void generateInsert() {
scriptArea.setEditable(true);
if (item instanceof Role) {
View localView = metadata.getViewRepository().getView(Role.class, View.LOCAL);
View roleView = new View(localView, Role.class, "role-export-view", true).addProperty("permissions", metadata.getViewRepository().getView(Permission.class, View.LOCAL));
item = getDsContext().getDataSupplier().reload(item, roleView);
StringBuilder result = new StringBuilder();
result.append(sqlGenerationService.generateInsertScript(item)).append("\n");
for (Permission permission : ((Role) item).getPermissions()) {
result.append(sqlGenerationService.generateInsertScript(permission)).append("\n");
}
scriptArea.setValue(result.toString());
} else {
scriptArea.setValue(sqlGenerationService.generateInsertScript(item));
}
showScriptArea();
}
use of com.haulmont.cuba.security.entity.Role in project cuba by cuba-platform.
the class PermissionUiHelper method createPermissionItem.
/**
* Add or edit permission item in datasource
* @param ds Datasource
* @param roleDs Role datasource
* @param permissionTarget Permission identifier
* @param type Permission type
* @param value Permission value
*/
public static void createPermissionItem(CollectionDatasource<Permission, UUID> ds, Datasource<Role> roleDs, final String permissionTarget, PermissionType type, Integer value) {
Permission permission = null;
for (Permission p : ds.getItems()) {
if (Objects.equals(p.getTarget(), permissionTarget)) {
permission = p;
break;
}
}
if (permission == null) {
// restore entity instead of create
if (ds instanceof RestorablePermissionDatasource) {
RestorablePermissionDatasource datasource = (RestorablePermissionDatasource) ds;
permission = datasource.findRemovedEntity(p -> p != null && Objects.equals(p.getTarget(), permissionTarget));
if (permission != null) {
datasource.restoreEntity(permission);
}
}
}
if (permission == null) {
Metadata metadata = AppBeans.get(Metadata.NAME);
Permission newPermission = metadata.create(Permission.class);
newPermission.setRole(roleDs.getItem());
newPermission.setTarget(permissionTarget);
newPermission.setType(type);
newPermission.setValue(value);
ds.addItem(newPermission);
} else {
permission.setValue(value);
}
}
Aggregations