Information
This explains basic usage of the Sakai SessionManager Service. This service is used to register new Authz (permission) groups.
- Trunk javadocs:
- Trunk source location: https://source.sakaiproject.org/svn/tool/trunk/
Accessing the SessionManager
- You can use Spring Framework to inject the service or use the cover
- Using Spring to get the service for your class (e.g. YourAppClass) (recommended)
- Add the SessionManager bean to the bean for YourAppClass
<bean id="org.sakaiproject.yourapp.logic.YourAppClass" class="org.sakaiproject.yourapp.logic.impl.YourAppClassImpl"> <property name="sessionManager" ref="org.sakaiproject.tool.api.SessionManager" /> </bean>
- Add a variable and setter to YourAppClass to use the service in like so:
private SessionManager sessionManager; public void setSessionManager(SessionManager sessionManager) { this.sessionManager = sessionManager; }
- Add the SessionManager bean to the bean for YourAppClass
- Using the cover to get the service
- Note: This is not the recommended method, you should be using Spring to inject the service
- Setup a variable to hold the instance from the cover
private SessionManager sessionManager;
- Get access to the service using the cover
sessionManager = org.sakaiproject.tool.cover.SessionManager.getInstance();
- Maven (project.xml) dependency
- Add the following to the maven file for the code in which you are using the service
<dependency> <groupId>sakaiproject</groupId> <artifactId>sakai-tool-api</artifactId> <version>${sakai.version}</version> </dependency>
- Add the following to the maven file for the code in which you are using the service
Getting the current user Session
- Use the SessionManager to get the current session
Session s = sessionManager.getCurrentSession(); if (s != null) { // do something with the Session }
Changing the current user Session to another user
- Note: This sets the current user Session to the Sakai admin
- Use the SessionManager to get the current session and then use the Session to set the userId
Session s = sessionManager.getCurrentSession(); if (s != null) { s.setUserId("admin"); } else { log.warn("no CurrentSession, cannot set to admin user"); }
- Note: This could allow you to run something that requires the admin user permissions while there is no session with appropriate permissions (or while the session is a user with lower permissions)