[Building Sakai] Question: Getting the user from the current session

Nguni Phakela nguni52 at gmail.com
Fri Jul 18 15:07:28 PDT 2014


Hi Sergio,

Try using developerHelperService. I have used it to get the current
reference to see who is logged in. This might be of help.

Kind Regards,
Nguni

--
Nguni Phakela
Cell: 061-131-2053
skype: nguni52
twitter: @nguni52


On Fri, Jul 18, 2014 at 11:29 PM, Sergio Muriel <sergioame at hotmail.com>
wrote:

>  Dear All,
> I've been trying to obtain the user from the current session (if there is
> a user logged in), or from somewhere else using the API or a web service,
> but I've been having difficulties finding an example that works.
>
> All I need from the user is his/her type (table sakai_user, field type).
>
> This is what I have in my web service:
>
> import org.sakaiproject.tool.api.Session;
> import org.sakaiproject.tool.api.SessionManager;
> import org.sakaiproject.user.api.User;
> import org.sakaiproject.user.api.UserDirectoryService;
>
> private UserDirectoryService userDirectoryService;
> ......
> userDirectoryService = (UserDirectoryService)
> ComponentManager.get(UserDirectoryService.class.getName());
> ........
> Session session  = sessionManager.getCurrentSession();
>  // check if session is active
> if (session == null) {
> System.out.println("*** Current session is null.");
> LOG.warn("WS RemoteReportCourses.establishSession(): Session " + sessionid
> + " is not active.");
> throw new AxisFault("WS RemoteReportCourses.establishSession(): Session "
> + sessionid + " is not active");
> } else {
> System.out.println("*** Session: " + session);
> System.out.println("*** session id: " + session.getId());
> System.out.println("*** user id: " + session.getUserId());
> User currentUser = null;
> try {
> currentUser = userDirectoryService.getUser(session.getUserId());
> } catch (UserNotDefinedException unde) {
> System.out.println("*** An error occurred: " + unde.getMessage());
> unde.printStackTrace();
> }
> if (currentUser == null) {
> System.out.println("*** Current user is null.");
> } else {
> System.out.println("*** User: " + currentUser);
> System.out.println("*** User.getId(): " + currentUser.getId());
> System.out.println("*** User.getEid(): " + currentUser.getEid());
> System.out.println("*** User.getType(): " + currentUser.getType());
> }
> }
>
> According to this page:
>
> https://confluence.sakaiproject.org/display/BOOT/Using+the+UserDirectoryService
> it should work, but this is all I get no matter if I'm logged into Sakai
> or not (I'm doing local development/testing):
>
> 2014-07-17 14:23:21,470  INFO http-bio-8080-exec-6
> org.sakaiproject.util.RemoteHostFilter - Access granted (.+):
> 127.0.0.1/127.0.0.1
> *** Session: org.sakaiproject.tool.impl.MySession at 5414ede
> *** session id: 8bd4e3bb-0733-47f6-b383-6e855435fa5c
> *** user id: null
> *** An error occurred: null
> *** Current user is null.
>
>
> There's another option to try but looks a little bit more complicated
> since it uses Spring framework injection and I don't really know how to
> configure it for a web service.
>
> Can anybody help me with this issue? Or with any web service that can give
> me the information that I want?
> Please note that I don't want the user give me his/her login/password
> again in a customized form, I want to take it from the current session. My
> Sakai version: 2.9.1
>
> Thank you in advance. I really appreciate any help.
>
>
>
>
> Best Regards,
> Sergio Muriel
> Phone: 641-451-7186
> Email: sergioame at hotmail.com
>
> _______________________________________________
> sakai-dev mailing list
> sakai-dev at collab.sakaiproject.org
> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>
> TO UNSUBSCRIBE: send email to
> sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
> "unsubscribe"
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20140719/914a321b/attachment.html 


More information about the sakai-dev mailing list