use of org.olat.admin.user.UserSearchController in project OpenOLAT by OpenOLAT.
the class AuthorListController method doAddOwners.
private void doAddOwners(UserRequest ureq, List<AuthoringEntryRow> rows) {
if (userSearchCtr != null)
return;
Roles roles = ureq.getUserSession().getRoles();
List<AuthoringEntryRow> manageableRows = new ArrayList<>(rows.size());
for (AuthoringEntryRow row : rows) {
boolean managed = RepositoryEntryManagedFlag.isManaged(row.getManagedFlags(), RepositoryEntryManagedFlag.membersmanagement);
boolean canAddOwner = roles.isOLATAdmin() || repositoryService.hasRole(ureq.getIdentity(), row, GroupRoles.owner.name()) || repositoryManager.isInstitutionalRessourceManagerFor(getIdentity(), roles, row);
if (canAddOwner && !managed) {
manageableRows.add(row);
}
}
if (manageableRows.isEmpty()) {
showWarning("bulk.update.nothing.applicable.selected");
} else {
removeAsListenerAndDispose(userSearchCtr);
userSearchCtr = new UserSearchController(ureq, getWindowControl(), false, true, UserSearchController.ACTION_KEY_CHOOSE_FINISH);
userSearchCtr.setUserObject(manageableRows);
listenTo(userSearchCtr);
String title = translate("tools.add.owners");
cmc = new CloseableModalController(getWindowControl(), translate("close"), userSearchCtr.getInitialComponent(), true, title);
listenTo(cmc);
cmc.activate();
}
}
use of org.olat.admin.user.UserSearchController in project OpenOLAT by OpenOLAT.
the class LDAPAdminController method event.
/**
* @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
* org.olat.core.gui.components.Component,
* org.olat.core.gui.control.Event)
*/
@Override
protected void event(UserRequest ureq, Component source, Event event) {
if (source == syncStartLink) {
// Start sync job
// Disable start link during sync
syncStartLink.setEnabled(false);
LDAPEvent ldapEvent = new LDAPEvent(LDAPEvent.DO_SYNCHING);
CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(ldapEvent, LDAPLoginManager.ldapSyncLockOres);
showInfo("admin.synchronize.started");
} else if (source == syncOneUserLink) {
userSearchCtrl = new UserSearchController(ureq, getWindowControl(), false);
listenTo(userSearchCtrl);
calloutCtr = new CloseableCalloutWindowController(ureq, getWindowControl(), userSearchCtrl.getInitialComponent(), syncOneUserLink, null, true, null);
calloutCtr.addDisposableChildController(userSearchCtrl);
calloutCtr.activate();
listenTo(calloutCtr);
} else if (source == deletStartLink) {
// cancel if some one else is making sync or delete job
if (!ldapLoginManager.acquireSyncLock()) {
showError("delete.error.lock");
} else {
deletStartLink.setEnabled(false);
// check and get LDAP connection
LdapContext ctx = ldapLoginManager.bindSystem();
if (ctx == null) {
showError("delete.error.connection");
return;
}
// get deleted users
identitiesToDelete = ldapLoginManager.getIdentitysDeletedInLdap(ctx);
try {
ctx.close();
} catch (NamingException e) {
showError("delete.error.connection.close");
logError("Could not close LDAP connection on manual delete sync", e);
}
if (identitiesToDelete != null && identitiesToDelete.size() != 0) {
hasIdentitiesToDelete = true;
/*
* start step which spawns the whole wizard
*/
Step start = new DeletStep00(ureq, hasIdentitiesToDelete, identitiesToDelete);
/*
* wizard finish callback called after "finish" is called
*/
StepRunnerCallback finishCallback = new StepRunnerCallback() {
public Step execute(UserRequest uureq, WindowControl control, StepsRunContext runContext) {
hasIdentitiesToDeleteAfterRun = ((Boolean) runContext.get("hasIdentitiesToDelete")).booleanValue();
if (hasIdentitiesToDeleteAfterRun) {
@SuppressWarnings("unchecked") List<Identity> idToDelete = (List<Identity>) runContext.get("identitiesToDelete");
amountUsersToDelete = idToDelete.size();
// Delete all identities now and tell everybody that
// we are finished
ldapLoginManager.deletIdentities(idToDelete);
return StepsMainRunController.DONE_MODIFIED;
} else {
return StepsMainRunController.DONE_UNCHANGED;
}
// otherwise return without deleting anything
}
};
deleteStepController = new StepsMainRunController(ureq, getWindowControl(), start, finishCallback, null, translate("admin.deleteUser.title"), "o_sel_ldap_delete_user_wizard");
listenTo(deleteStepController);
getWindowControl().pushAsModalDialog(deleteStepController.getInitialComponent());
} else {
hasIdentitiesToDelete = false;
showInfo("delete.step.noUsers");
deletStartLink.setEnabled(true);
ldapLoginManager.freeSyncLock();
}
}
} else if (source == removeFallBackAuthsLink) {
removeFallBackAuthsLink.setEnabled(false);
ldapLoginManager.removeFallBackAuthentications();
showInfo("opsuccess");
}
}
use of org.olat.admin.user.UserSearchController in project openolat by klemens.
the class ClusterAdminControllerCluster method event.
@Override
protected void event(UserRequest ureq, Component source, Event event) {
if (source == syncLong) {
// sync on a olatresourceable and hold the lock for 5 seconds.
CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync(ORES_TEST, new SyncerExecutor() {
public void execute() {
sleep(5000);
}
});
// the runnable is executed within the same thread->
getWindowControl().setInfo("done syncing on the test olatresourceable for 5 seconds");
} else if (source == syncShort) {
// sync on a olatresourceable and hold the lock for 1 second.
CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync(ORES_TEST, new SyncerExecutor() {
public void execute() {
sleep(1000);
}
});
// the runnable is executed within the same thread->
getWindowControl().setInfo("done syncing on the test olatresourceable for 1 second");
} else if (source == testPerf) {
// send 1000 (short) messages over the cluster bus
int cnt = 1000;
long start = System.nanoTime();
for (int i = 0; i < cnt; i++) {
clusBus.fireEventToListenersOf(new MultiUserEvent("jms-perf-test-" + i + " of " + cnt), ORES_TEST);
}
long stop = System.nanoTime();
long dur = stop - start;
double inmilis = dur / 1000000;
double avg = dur / cnt;
double avgmilis = avg / 1000000;
getWindowControl().setInfo("sending " + cnt + " messages took " + inmilis + " ms, avg per messages was " + avg + " ns = " + avgmilis + " ms");
} else if (source == testCachePut) {
CacheWrapper<String, String> cw = CoordinatorManager.getInstance().getCoordinator().getCacher().getCache(this.getClass().getSimpleName(), "cachetest");
// we explicitly use put and not putSilent to show that a put invalidates (and thus removes) this key of this cache in all other cluster nodes.
cw.update("akey", "hello");
updateCacheInfo();
} else if (source == testCachePut2) {
// we explicitly use put and not putSilent to show that a put invalidates (and thus removes) this key of this cache in all other cluster nodes.
CacheWrapper<String, String> cw = CoordinatorManager.getInstance().getCoordinator().getCacher().getCache(this.getClass().getSimpleName(), "cachetest");
cw.update("akey", "world");
updateCacheInfo();
} else if (source == testSFUPerf) {
// acquire a sync 1000x times (does internally a select-for-update on the database)
int cnt = 1000;
long start = System.nanoTime();
for (int i = 0; i < cnt; i++) {
CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync(ORES_TEST, new SyncerExecutor() {
public void execute() {
// empty
}
});
}
long stop = System.nanoTime();
long dur = stop - start;
double inmilis = dur / 1000000;
double avg = dur / cnt;
double avgmilis = avg / 1000000;
getWindowControl().setInfo("acquiring " + cnt + " locks for syncing (using db's \"select for update\") took " + inmilis + " ms, avg per messages was " + avg + " ns = " + avgmilis + " ms");
} else if (source == releaseAllLocksFor) {
// let a user search pop up
usc = new UserSearchController(ureq, getWindowControl(), true);
listenTo(usc);
getWindowControl().pushAsModalDialog(usc.getInitialComponent());
} else if ((source == nodeInfoVc) && (event.getCommand().equals("switchToNode"))) {
String nodeIdStr = ureq.getHttpReq().getParameter("nodeId");
if (nodeIdStr.length() == 1) {
nodeIdStr = "0" + nodeIdStr;
}
Cookie[] cookies = ureq.getHttpReq().getCookies();
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
if ("JSESSIONID".equals(cookie.getName())) {
String redirectedButInvalidSessionId = cookie.getValue();
redirectedButInvalidSessionId = redirectedButInvalidSessionId.substring(0, redirectedButInvalidSessionId.length() - 2) + nodeIdStr;
logInfo("redirecting session to node " + nodeIdStr + ", new sessionid=" + redirectedButInvalidSessionId, null);
cookie.setValue(redirectedButInvalidSessionId);
replaceCookie(ureq.getHttpReq(), ureq.getHttpResp(), cookie);
// OLAT-5165: make sure we can always bypass the dmz reject mechanism (for 5min that is)
Cookie newCookie = new Cookie("bypassdmzreject", String.valueOf(System.currentTimeMillis()));
// 5min lifetime
newCookie.setMaxAge(5 * 60);
newCookie.setPath(WebappHelper.getServletContextPath());
newCookie.setSecure(ureq.getHttpReq().isSecure());
newCookie.setComment("cookie allowing olat admin users to bypass dmz rejects");
ureq.getHttpResp().addCookie(newCookie);
OncePanel oncePanel = new OncePanel("refresh");
oncePanel.setContent(createVelocityContainer("refresh"));
mainVc.put("refresh", oncePanel);
break;
}
}
} else if (source == toggleStartStop) {
clusBus.resetStats();
updatePerfInfos();
} else if (source == resetStats) {
clusBus.resetStats();
updatePerfInfos();
}
}
use of org.olat.admin.user.UserSearchController in project openolat by klemens.
the class TaxonomyLevelCompetenceController method doSearchUsersToAdd.
private void doSearchUsersToAdd(UserRequest ureq, TaxonomyCompetenceTypes comptenceType) {
if (userSearchCtrl != null)
return;
userSearchCtrl = new UserSearchController(ureq, getWindowControl(), true, true, false);
userSearchCtrl.setUserObject(comptenceType);
listenTo(userSearchCtrl);
cmc = new CloseableModalController(getWindowControl(), translate("close"), userSearchCtrl.getInitialComponent(), true, translate("add.competence." + comptenceType.name()));
listenTo(cmc);
cmc.activate();
}
use of org.olat.admin.user.UserSearchController in project openolat by klemens.
the class EPShareListController method doSelectIdentity.
protected void doSelectIdentity(UserRequest ureq, EPSharePolicyWrapper wrapper) {
removeAsListenerAndDispose(selectUserCtrl);
selectUserCtrl = new UserSearchController(ureq, getWindowControl());
selectUserCtrl.setUserObject(wrapper);
listenTo(selectUserCtrl);
cmc = new CloseableModalController(getWindowControl(), translate("close"), selectUserCtrl.getInitialComponent(), true, translate("choose.identity"));
cmc.activate();
listenTo(cmc);
}
Aggregations