diff --git a/src/main/java/org/olat/basesecurity/AuthHelper.java b/src/main/java/org/olat/basesecurity/AuthHelper.java index 96322db5829fdcc121d3490d291d9211f810e5aa..205ae0adb3dc9bbe54d8d202099669a628234c8c 100644 --- a/src/main/java/org/olat/basesecurity/AuthHelper.java +++ b/src/main/java/org/olat/basesecurity/AuthHelper.java @@ -117,7 +117,7 @@ public class AuthHelper { * @return True if success, false otherwise. */ public static int doLogin(Identity identity, String authProvider, UserRequest ureq) { - int initializeStatus = initializeLogin(identity, authProvider, ureq); + int initializeStatus = initializeLogin(identity, authProvider, ureq, false); if (initializeStatus != LOGIN_OK) { return initializeStatus; // login not successfull } @@ -153,10 +153,11 @@ public class AuthHelper { * @param identity * @param authProvider * @param ureq + * @param Is login via REST API? * @return */ - public static int doHeadlessLogin(Identity identity, String authProvider, UserRequest ureq) { - int initializeStatus = initializeLogin(identity, authProvider, ureq); + public static int doHeadlessLogin(Identity identity, String authProvider, UserRequest ureq, boolean rest) { + int initializeStatus = initializeLogin(identity, authProvider, ureq, rest); if (initializeStatus != LOGIN_OK) { return initializeStatus; // login not successful } @@ -297,7 +298,7 @@ public class AuthHelper { * @param ureq * @return boolean */ - private static int initializeLogin(Identity identity, String authProvider, UserRequest ureq) { + private static int initializeLogin(Identity identity, String authProvider, UserRequest ureq, boolean rest) { // continue only if user has login permission. if (identity == null) return LOGIN_FAILED; //test if a user may not logon, since he/she is in the PERMISSION_LOGON @@ -334,7 +335,7 @@ public class AuthHelper { // put users personal rss token into session RSSUtil.putPersonalRssTokenInSession(ureq); // calculate session info and attach it to the user session - setSessionInfoFor(identity, authProvider, ureq); + setSessionInfoFor(identity, authProvider, ureq, rest); //confirm signedOn usess.signOn(); // set users web delivery mode @@ -488,7 +489,7 @@ public class AuthHelper { * @param authProvider * @param ureq */ - public static void setSessionInfoFor(Identity identity, String authProvider, UserRequest ureq) { + public static void setSessionInfoFor(Identity identity, String authProvider, UserRequest ureq, boolean rest) { HttpSession session = ureq.getHttpReq().getSession(); SessionInfo sinfo = new SessionInfo(identity.getName(), session); sinfo.setFirstname(identity.getUser().getProperty(UserConstants.FIRSTNAME, ureq.getLocale())); @@ -505,6 +506,7 @@ public class AuthHelper { sinfo.setUserAgent(ureq.getHttpReq().getHeader("User-Agent")); sinfo.setSecure(ureq.getHttpReq().isSecure()); sinfo.setLastClickTime(); + sinfo.setREST(rest); // set session info for this session UserSession usess = ureq.getUserSession(); usess.setSessionInfo(sinfo); @@ -513,6 +515,7 @@ public class AuthHelper { sessionInfoForUsertracking.put("language", usess.getLocale().toString()); sessionInfoForUsertracking.put("authprovider", authProvider); sessionInfoForUsertracking.put("iswebdav", String.valueOf(sinfo.isWebDAV())); + sessionInfoForUsertracking.put("isrest", String.valueOf(sinfo.isREST())); usess.getIdentityEnvironment().setAttributes(sessionInfoForUsertracking); } diff --git a/src/main/java/org/olat/core/util/UserSession.java b/src/main/java/org/olat/core/util/UserSession.java index 6de8deaa2c5a3492d0b152f43fa71716af35e091..570d1c8d00dfd0a2b6c87668802cf330de3483d9 100644 --- a/src/main/java/org/olat/core/util/UserSession.java +++ b/src/main/java/org/olat/core/util/UserSession.java @@ -86,19 +86,19 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList //clusterNOK cache ?? private static Set<UserSession> authUserSessions = new HashSet<UserSession>(101); - private static Map<String, Identity> userNameToIdentity = new HashMap<String, Identity>(101); + private static Set<String> userNameToIdentity = new HashSet<String>(101); private static int sessionTimeoutInSec = 300; private static int sessionTimeoutAuthInSec = 7200; private static Set<String> authUsersNamesOtherNodes = new HashSet<String>(101); // things to put into that should not be clear when signing on (e.g. remember // url for a direct jump) - private Map nonClearedStore = new HashMap(); + private Map<String,Object> nonClearedStore = new HashMap<String,Object>(); // the environment (identity, locale, ..) of the identity private IdentityEnvironment identityEnvironment; - private SessionInfo sessionInfo = null; - private Map store = null; + private SessionInfo sessionInfo; + private Map<String,Object> store; private boolean authenticated = false; private boolean registeredWithBus = false; private Preferences guiPreferences; @@ -122,7 +122,7 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList * */ private void init() { - store = new HashMap(4); + store = new HashMap<String,Object>(4); identityEnvironment = new IdentityEnvironment(); singleUserSystemBus = CoordinatorManager.getInstance().getCoordinator().createSingleUserInstance(); authenticated = false; @@ -214,7 +214,7 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList * @param key * @return removed entry */ - public Object removeEntry(Object key) { + public Object removeEntry(String key) { return store.remove(key); } @@ -227,7 +227,7 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList * @param key * @param o */ - public void putEntryInNonClearedStore(Object key, Object o) { + public void putEntryInNonClearedStore(String key, Object o) { nonClearedStore.put(key, o); } @@ -235,7 +235,7 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList * @param key * @return removed entry */ - public Object removeEntryFromNonClearedStore(Object key) { + public Object removeEntryFromNonClearedStore(String key) { return nonClearedStore.remove(key); } @@ -434,7 +434,7 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList // if // Disposable - for (Iterator it_storevals = new ArrayList(store.values()).iterator(); it_storevals.hasNext();) { + for (Iterator<Object> it_storevals = new ArrayList<Object>(store.values()).iterator(); it_storevals.hasNext();) { obj = it_storevals.next(); if (obj instanceof Disposable) { // synchronous, since triggered by tomcat session timeout or user @@ -545,9 +545,9 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList UserSession invalidatedSession = null; synchronized (authUserSessions) { //o_clusterOK by:fj - // check if allready a session exist for this user - if ( (userNameToIdentity.containsKey(identity.getName().toLowerCase()) || authUsersNamesOtherNodes.contains(identity.getName()) ) - && !sessionInfo.isWebDAV() && !this.getRoles().isGuestOnly()) { + // check if already a session exist for this user + if ( (userNameToIdentity.contains(identity.getName().toLowerCase()) || authUsersNamesOtherNodes.contains(identity.getName()) ) + && !sessionInfo.isWebDAV() && !sessionInfo.isREST() && !getRoles().isGuestOnly()) { Tracing.logInfo("Loggin-process II: User has already a session => signOffAndClear existing session", this.getClass()); invalidatedSession = getUserSessionFor(identity.getName().toLowerCase()); @@ -563,7 +563,7 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList // database queries, the login form or the IM account. IM works only with lowercase // characters -> map stores values as such Tracing.logDebug("signOn() adding to userNameToIdentity: "+identity.getName().toLowerCase(), getClass()); - userNameToIdentity.put(identity.getName().toLowerCase(), identity); + userNameToIdentity.add(identity.getName().toLowerCase()); } // load user prefs guiPreferences = PreferencesFactory.getInstance().getPreferencesFor(identity, identityEnvironment.getRoles().isGuestOnly()); @@ -593,16 +593,17 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList /** - * Lookup non-webdav UserSession for username. + * Lookup non-webdav, non-REST UserSession for username. * @param userName * @return user-session or null when no session was founded. */ private UserSession getUserSessionFor(String userName) { //do not call from somewhere else then signOffAndClear!! - Set authUserSessionsCopy = new HashSet(authUserSessions); - for (Iterator iterator = authUserSessionsCopy.iterator(); iterator.hasNext();) { + Set<UserSession> authUserSessionsCopy = new HashSet<UserSession>(authUserSessions); + for (Iterator<UserSession> iterator = authUserSessionsCopy.iterator(); iterator.hasNext();) { UserSession userSession = (UserSession) iterator.next(); - if (userName.equalsIgnoreCase(userSession.getIdentity().getName()) && userSession.getSessionInfo()!=null && !userSession.getSessionInfo().isWebDAV()) { + if (userName.equalsIgnoreCase(userSession.getIdentity().getName()) && userSession.getSessionInfo()!=null + && !userSession.getSessionInfo().isWebDAV() && !userSession.getSessionInfo().isREST() ) { return userSession; } } @@ -616,19 +617,19 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList * @return the identity or null if no user with userName is currently logged * on */ - public static Identity getSignedOnIdentity(String userName) { + public static boolean isSignedOnIdentity(String userName) { synchronized (authUserSessions) { //o_clusterOK by:fj - return (Identity) userNameToIdentity.get(userName.toLowerCase()); + return userNameToIdentity.contains(userName.toLowerCase()); } } /** * @return set of authenticated active user sessions */ - public static Set getAuthenticatedUserSessions() { - Set copy; + public static Set<UserSession> getAuthenticatedUserSessions() { + Set<UserSession> copy; synchronized (authUserSessions) { //o_clusterOK by:fj - copy = new HashSet(authUserSessions); + copy = new HashSet<UserSession>(authUserSessions); } return copy; } @@ -744,8 +745,8 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList int invalidateCounter = 0; Tracing.logAudit("All sessions were invalidated by an administrator", UserSession.class); //clusterNOK ?? invalidate only locale sessions ? - Set iterCopy = new HashSet(authUserSessions); - for (Iterator iterator = iterCopy.iterator(); iterator.hasNext();) { + Set<UserSession> iterCopy = new HashSet<UserSession>(authUserSessions); + for (Iterator<UserSession> iterator = iterCopy.iterator(); iterator.hasNext();) { UserSession userSession = (UserSession) iterator.next(); Roles userRoles = userSession != null ? userSession.getRoles() : null; if (userRoles != null && !userRoles.isOLATAdmin()) { @@ -771,18 +772,18 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList int invalidateCounter = 0; // 1. Copy authUserSessions in sorted TreeMap // This is the Comparator that will be used to sort the TreeSet: - Comparator sessionComparator = new Comparator() { - public int compare(Object o1, Object o2) { - Long long1 = new Long(((UserSession) o1).getSessionInfo().getLastClickTime()); - Long long2 = new Long(((UserSession) o2).getSessionInfo().getLastClickTime()); + Comparator<UserSession> sessionComparator = new Comparator<UserSession>() { + public int compare(UserSession o1, UserSession o2) { + Long long1 = new Long((o1).getSessionInfo().getLastClickTime()); + Long long2 = new Long((o2).getSessionInfo().getLastClickTime()); return long1.compareTo(long2); } }; // clusterNOK ?? invalidate only locale sessions ? - TreeSet sortedSet = new TreeSet(sessionComparator); + TreeSet<UserSession> sortedSet = new TreeSet<UserSession>(sessionComparator); sortedSet.addAll(authUserSessions); int i = 0; - for (Iterator iterator = sortedSet.iterator(); iterator.hasNext() && i++<nbrSessions;) { + for (Iterator<UserSession> iterator = sortedSet.iterator(); iterator.hasNext() && i++<nbrSessions;) { try { UserSession userSession = (UserSession) iterator.next(); if (!userSession.getRoles().isOLATAdmin() && !userSession.getSessionInfo().isWebDAV()) { diff --git a/src/main/java/org/olat/dispatcher/TemporaryAutoDispatcher.java b/src/main/java/org/olat/dispatcher/TemporaryAutoDispatcher.java deleted file mode 100644 index 8284e0a857c56350dcc0e4c7bf3e6dcdef1839d0..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/dispatcher/TemporaryAutoDispatcher.java +++ /dev/null @@ -1,150 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <p> -* Licensed under the Apache License, Version 2.0 (the "License"); <br> -* you may not use this file except in compliance with the License.<br> -* You may obtain a copy of the License at -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <p> -* Unless required by applicable law or agreed to in writing,<br> -* software distributed under the License is distributed on an "AS IS" BASIS, <br> -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> -* See the License for the specific language governing permissions and <br> -* limitations under the License. -* <p> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ - -package org.olat.dispatcher; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.olat.basesecurity.AuthHelper; -import org.olat.basesecurity.BaseSecurityManager; -import org.olat.basesecurity.BaseSecurityModule; -import org.olat.commons.rss.RSSUtil; -import org.olat.core.commons.chiefcontrollers.BaseChiefControllerCreator; -import org.olat.core.commons.fullWebApp.BaseFullWebappController; -import org.olat.core.commons.fullWebApp.BaseFullWebappControllerParts; -import org.olat.core.dispatcher.Dispatcher; -import org.olat.core.gui.UserRequest; -import org.olat.core.gui.Windows; -import org.olat.core.gui.components.Window; -import org.olat.core.gui.control.ChiefController; -import org.olat.core.gui.control.Controller; -import org.olat.core.gui.control.WindowControl; -import org.olat.core.gui.control.creator.ControllerCreator; -import org.olat.core.gui.exception.MsgFactory; -import org.olat.core.id.Identity; -import org.olat.core.id.Roles; -import org.olat.core.logging.AssertException; -import org.olat.core.logging.Tracing; -import org.olat.core.util.UserSession; -import org.olat.core.util.WebappHelper; -import org.olat.core.util.i18n.I18nManager; -import org.olat.login.AuthBFWCParts; -import org.olat.login.OLATAuthenticationController; - -/** - * - * @author Felix Jost - */ -public class TemporaryAutoDispatcher implements Dispatcher { - - /** - * @param ureq - * @return chiefcontroller - */ - private ChiefController createAuthHome(UserRequest ureq) { - if (!ureq.getUserSession().isAuthenticated()) throw new AssertException("not authenticated!"); - - BaseChiefControllerCreator bbc = new BaseChiefControllerCreator(); - bbc.setContentControllerCreator(/*this is later injected by spring*/new ControllerCreator() { - public Controller createController(UserRequest lureq, WindowControl lwControl) { - BaseFullWebappControllerParts authSitesAndNav = new AuthBFWCParts(); - return new BaseFullWebappController(lureq, lwControl, authSitesAndNav ); - } - }); - - ChiefController cc = bbc.createChiefController(ureq); - return cc; - } - - /** - * Main method called by DispatcherAction. This processess all requests for - * authenticated users. - * - * @param request - * @param response - * @param uriPrefix - */ - public void execute(HttpServletRequest request, HttpServletResponse response, String uriPrefix) { - UserSession usess = UserSession.getUserSession(request); - UserRequest ureq = null; - - try { - ureq = new UserRequest(uriPrefix, request, response); - boolean auth = usess.isAuthenticated(); - - if (!auth || !ureq.isValidDispatchURI()) { - // String lang = - // I18nManager.getInstance().getDefaultLocale().toString(); - Identity ident = BaseSecurityManager.getInstance().findIdentityByName("administrator"); - - usess.signOffAndClear(); - usess.setIdentity(ident); - usess.setRoles(new Roles(true, true, true, true, false, true, false)); - usess.setLocale(I18nManager.getInstance().getLocaleOrDefault(ident.getUser().getPreferences().getLanguage())); - - // brasato:: was - // Windows.getWindows(ureq).getWindowManager().getGlobalSettings().setFontSize( - // identity.getUser().getPreferences().getFontsize() ); - Windows.getWindows(ureq).setAttribute("fontsize", ident.getUser().getPreferences().getFontsize()); - - AuthHelper.setSessionInfoFor(ident, BaseSecurityModule.getDefaultAuthProviderIdentifier(), ureq); - // put users personal rss token into session - RSSUtil.putPersonalRssTokenInSession(ureq); - // confirm signedOn - usess.signOn(); - - // - Windows.getWindows(ureq).getWindowManager().setAjaxWanted(ureq, true); - - // successfull login, reregister window - ChiefController occ = createAuthHome(ureq); - Window currentWindow = occ.getWindow(); - currentWindow.setUriPrefix(WebappHelper.getServletContextPath() + "/temp/"); - Windows.getWindows(ureq).registerWindow(currentWindow); - // render only - currentWindow.dispatchRequest(ureq, true); - - } else { - // auth: get window - Windows ws = Windows.getWindows(ureq); - Window window = ws.getWindow(ureq); - window.dispatchRequest(ureq); - } - - - } catch (Throwable th) { - try { - ChiefController msgcc = MsgFactory.createMessageChiefController(ureq, th); - // the controller's window must be failsafe also - msgcc.getWindow().dispatchRequest(ureq, true); - // do not dispatch (render only), since this is a new Window created as - // a result of another window's click. - } catch (Throwable t) { - Tracing.logError("We're fucked up....", t, TemporaryAutoDispatcher.class); - } - } - } -} diff --git a/src/main/java/org/olat/instantMessaging/ImPrefsManager.java b/src/main/java/org/olat/instantMessaging/ImPrefsManager.java index 8488c219879602e8c6ff56aaab400419b4a1f892..cdb81c5aeca2f5c7ce9d650c9d87f405907d39b0 100644 --- a/src/main/java/org/olat/instantMessaging/ImPrefsManager.java +++ b/src/main/java/org/olat/instantMessaging/ImPrefsManager.java @@ -87,6 +87,11 @@ public class ImPrefsManager extends BasicManager { */ public ImPreferences loadOrCreatePropertiesFor(final Identity identity) { //o_clusterOK by guido + ImPreferences imPrefs = findPropertiesFor(identity); + if(imPrefs != null) { + return imPrefs; + } + return CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync( OresHelper.createOLATResourceableInstanceWithoutCheck(LOCK_KEY, identity.getKey()), new SyncerCallback<ImPreferences>(){ diff --git a/src/main/java/org/olat/instantMessaging/SmackInstantMessagingImpl.java b/src/main/java/org/olat/instantMessaging/SmackInstantMessagingImpl.java index 3c8db0425eab70bd8cc55048b62d5561877d436e..19fb18e92340d5053329375271fb21aae5f28e4d 100644 --- a/src/main/java/org/olat/instantMessaging/SmackInstantMessagingImpl.java +++ b/src/main/java/org/olat/instantMessaging/SmackInstantMessagingImpl.java @@ -240,14 +240,14 @@ public class SmackInstantMessagingImpl extends LogDelegator implements InstantMe /** * @return Set containing the usernames */ - public Set getUsernamesFromConnectedUsers() { + public Set<String> getUsernamesFromConnectedUsers() { return new HashSet<String>(getClients().keySet()); } /** * @see org.olat.instantMessaging.InstantMessaging#getClients() */ - public Map getClients() { + public Map<String,InstantMessagingClient> getClients() { return clientManager.getClients(); } diff --git a/src/main/java/org/olat/instantMessaging/rosterandchat/ChangePresenceJob.java b/src/main/java/org/olat/instantMessaging/rosterandchat/ChangePresenceJob.java index 17eeb700f5e41dd493eb4656a7a224b0e791f605..a522d161fe44a5a6bcd7d71b0039e80d2c8f0ffd 100644 --- a/src/main/java/org/olat/instantMessaging/rosterandchat/ChangePresenceJob.java +++ b/src/main/java/org/olat/instantMessaging/rosterandchat/ChangePresenceJob.java @@ -72,15 +72,15 @@ public class ChangePresenceJob extends JobWithDB { long lastAccessTime = 0; String username = null; InstantMessagingClient client = null; - boolean isWebDav = false; + boolean isWebDavOrRest = false; try { lastAccessTime = session.getSessionInfo().getLastClickTime(); username = session.getIdentity().getName(); - isWebDav = session.getSessionInfo().isWebDAV(); + isWebDavOrRest = session.getSessionInfo().isWebDAV() || session.getSessionInfo().isREST(); } catch (Exception e) { log.info("Tried to get LastAccessTime from session that became in the meantime invalid", e.toString()); } - if (!isWebDav) { // leave webdav sessions untouched + if (!isWebDavOrRest) { // leave webdav sessions untouched if (InstantMessagingModule.isEnabled()) { // avoid reconnection of dead or duplicate sessions diff --git a/src/main/java/org/olat/instantMessaging/ui/ConnectedUsersLocal.java b/src/main/java/org/olat/instantMessaging/ui/ConnectedUsersLocal.java index df026051c031a6415ea8e8767eaa21f30c822b38..b554d915492e86f80f96635a62bff848abd33842 100644 --- a/src/main/java/org/olat/instantMessaging/ui/ConnectedUsersLocal.java +++ b/src/main/java/org/olat/instantMessaging/ui/ConnectedUsersLocal.java @@ -31,7 +31,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.olat.core.commons.persistence.DBFactory; +import org.olat.basesecurity.BaseSecurityManager; import org.olat.core.id.Identity; import org.olat.core.id.UserConstants; import org.olat.core.logging.AssertException; @@ -88,8 +88,7 @@ public class ConnectedUsersLocal implements InstantMessagingSessionItems { List<ConnectedUsersListEntry> entries = new ArrayList<ConnectedUsersListEntry>(); Map<String, Long> lastActivity = new HashMap<String, Long>(); Set<String> usernames = InstantMessagingModule.getAdapter().getUsernamesFromConnectedUsers(); - List<UserSession> authSessions = new ArrayList(UserSession.getAuthenticatedUserSessions()); - + Set<UserSession> authSessions = UserSession.getAuthenticatedUserSessions(); for (Iterator<UserSession> iter = authSessions.iterator(); iter.hasNext();) { UserSession userSession = iter.next(); long lastAccTime = 0; @@ -108,14 +107,14 @@ public class ConnectedUsersLocal implements InstantMessagingSessionItems { ConnectedUsersListEntry entry = (ConnectedUsersListEntry)sessionItemsCache.get(olatusername); if (entry != null && !olatusername.equals(username)) { + entry.setLastActivity(lastActivity.get(olatusername)); entries.add(entry); if (log.isDebug()) log.debug("loading item from cache: "+olatusername); } else { //item not in cache - Identity identity = UserSession.getSignedOnIdentity(olatusername); - if (identity != null) { - identity = (Identity) DBFactory.getInstance().loadObject(identity); + if (UserSession.isSignedOnIdentity(olatusername)) { + Identity identity = (Identity)BaseSecurityManager.getInstance().findIdentityByName(olatusername); try { ImPreferences imPrefs = imPrefsManager.loadOrCreatePropertiesFor(identity); if ( (imPrefs != null) ) { diff --git a/src/main/java/org/olat/restapi/security/Authentication.java b/src/main/java/org/olat/restapi/security/Authentication.java index c228dfdadac62363ae15c131df93c0e7ed65294a..19755cb40eb377f4e8afa159de41e0370782e17c 100644 --- a/src/main/java/org/olat/restapi/security/Authentication.java +++ b/src/main/java/org/olat/restapi/security/Authentication.java @@ -93,7 +93,7 @@ public class Authentication { return Response.serverError().status(Status.UNAUTHORIZED).build(); } - int loginStatus = AuthHelper.doHeadlessLogin(identity, BaseSecurityModule.getDefaultAuthProviderIdentifier(), ureq); + int loginStatus = AuthHelper.doHeadlessLogin(identity, BaseSecurityModule.getDefaultAuthProviderIdentifier(), ureq, true); if (loginStatus == AuthHelper.LOGIN_OK) { //fxdiff: FXOLAT-268 update last login date and register active user UserDeletionManager.getInstance().setIdentityAsActiv(identity); diff --git a/src/main/java/org/olat/restapi/security/RestApiLoginFilter.java b/src/main/java/org/olat/restapi/security/RestApiLoginFilter.java index b6e6e1dc6df2786b1bca7c033b135f48e80a27ed..5e8bb7274143739fe68e346566a0ba4cce574f63 100644 --- a/src/main/java/org/olat/restapi/security/RestApiLoginFilter.java +++ b/src/main/java/org/olat/restapi/security/RestApiLoginFilter.java @@ -172,7 +172,7 @@ public class RestApiLoginFilter implements Filter { } request.setAttribute(RestSecurityHelper.SEC_USER_REQUEST, ureq); - int loginStatus = AuthHelper.doHeadlessLogin(identity, BaseSecurityModule.getDefaultAuthProviderIdentifier(), ureq); + int loginStatus = AuthHelper.doHeadlessLogin(identity, BaseSecurityModule.getDefaultAuthProviderIdentifier(), ureq, true); if (loginStatus == AuthHelper.LOGIN_OK) { //fxdiff: FXOLAT-268 update last login date and register active user UserDeletionManager.getInstance().setIdentityAsActiv(identity); @@ -279,7 +279,7 @@ public class RestApiLoginFilter implements Filter { request.setAttribute(RestSecurityHelper.SEC_USER_REQUEST, ureq); RestSecurityBean securityBean = (RestSecurityBean)CoreSpringFactory.getBean(RestSecurityBean.class); Identity identity = securityBean.getIdentity(token); - int loginStatus = AuthHelper.doHeadlessLogin(identity, BaseSecurityModule.getDefaultAuthProviderIdentifier(), ureq); + int loginStatus = AuthHelper.doHeadlessLogin(identity, BaseSecurityModule.getDefaultAuthProviderIdentifier(), ureq, true); if(loginStatus == AuthHelper.LOGIN_OK) { response.setHeader(RestSecurityHelper.SEC_TOKEN, securityBean.renewToken(token)); synchronized(uress) { diff --git a/src/main/java/org/olat/user/ChangePrefsController.java b/src/main/java/org/olat/user/ChangePrefsController.java index c813f07161c188824813a371fdb96dbccb85ace3..fe414dbc7709ed5b06cf2be4c18b24401dab5609 100644 --- a/src/main/java/org/olat/user/ChangePrefsController.java +++ b/src/main/java/org/olat/user/ChangePrefsController.java @@ -198,7 +198,7 @@ class SpecialPrefsForm extends FormBasicController { protected void formOK(UserRequest ureq) { // OLAT-6429 don't change another users GUI prefs when he is logged in if (!ureq.getIdentity().equalsByPersistableKey(tobeChangedIdentity)) { - if (UserSession.getSignedOnIdentity(tobeChangedIdentity.getName()) != null) { + if (UserSession.isSignedOnIdentity(tobeChangedIdentity.getName())) { showError("error.user.logged.in", tobeChangedIdentity.getName()); prefsElement.reset(); return; diff --git a/src/main/resources/serviceconfig/org/olat/_spring/brasatoconfigpart.xml b/src/main/resources/serviceconfig/org/olat/_spring/brasatoconfigpart.xml index 96c3f2ef1f957b4ecf92b3ebd65951a404203130..cd10e6b8c0ca7ae3a81aa5332d474a9c0539c0d0 100644 --- a/src/main/resources/serviceconfig/org/olat/_spring/brasatoconfigpart.xml +++ b/src/main/resources/serviceconfig/org/olat/_spring/brasatoconfigpart.xml @@ -23,13 +23,7 @@ <entry key="/url/"> <!-- if you change /url make sure you also modify olatcore/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/_static/js/BTinyHelper.js accordingly --> <ref bean="restdispatcher" /> - </entry> <!-- - --> - <!-- for fast developement mode - <entry key="/temp/"> - <ref bean="tempdispatcher" /> </entry> - --> <entry key="/"> <ref bean="redirect2defaultbean" /> </entry> @@ -178,9 +172,6 @@ form action: /olat/remotelogin/ --> <bean id="remoteloginbean" class="org.olat.dispatcher.RemoteLoginformDispatcher" /> - - <bean id="tempdispatcher" - class="org.olat.dispatcher.TemporaryAutoDispatcher" /> <bean id="shibbean" class="org.olat.shibboleth.ShibbolethDispatcher" />