[Building Sakai] question about admin privilege

Hai Vo Thanh v0thanhhai at yahoo.com
Sat Jan 16 14:56:20 PST 2010


can you explain more about the SecurityAdvisor.

SecurityAdvice isAllowed(String userId, String function, String reference);

i thought it is used to check the current user can perform the function on the referenced Entity. What is the String function? what is the String reference? How to use it?

i encountered a problem when i want to get the AssignmentSubmission by using the AssignmentService. a normal user can not get it - a internal error occoured, but when i grant the user admin role, he can get the AssignmentSubmission. I need something to trigger a user to admin before i get the AssignmentSubmission and then trigger off.
Thanks and regards
-----------------
Hai Vo




________________________________
From: Nuno Fernandes <nuno at ufp.edu.pt>
To: Stephen Marquard <stephen.marquard at uct.ac.za>
Cc: Hai Vo Thanh <v0thanhhai at yahoo.com>; sakai-dev at collab.sakaiproject.org
Sent: Fri, January 15, 2010 11:59:24 PM
Subject: Re: [Building Sakai] question about admin privilege

Right!

With a custom SecurityAdvisor, you can also grant/deny/pass access only for a specific set of permissions and/or entity references...

Nuno


On Fri, Jan 15, 2010 at 4:57 PM, Stephen Marquard <stephen.marquard at uct.ac.za> wrote:

>
>There is also the option of using a SecurityAdvisor to permit the
>>current user to perform specific actions, rather than setting the user's
>>session to admin, which applies to any requests from that user while in
>>effect, and can lead to unintended security holes if the "admin-enabled"
>>action takes a while to execute, for example.
>
>>Regards
>>Stephen
>
>>>>> Nuno Fernandes <nuno at ufp.edu.pt> 1/15/2010 11:47 AM >>>
>
>Hi Hai Vo,
>
>>Are you trying to give admin privilege to a user on UI, or do you wish
>>to
>>perform an admin operation triggered by an user who don't have such
>>permission (eg, adding users to a site after an user (with access
>>role)
>>clicking on something on a tool page)?
>
>>For the second case (done in code), you could probably use something
>>like:
>
>>    AdminExecution exec = new AdminExecution() {
>>        @Override
>>        public Object execution() throws Exception {
>>            return performSakaiAdminOpAndReturnString();
>>        }
>>    };
>>    try{
>>        return (String) exec.execute();
>>    }catch(Exception e){
>>        log.error("Error while executing admin operation", e);
>>        return null;
>>    }
>
>>where, *AdminExecution* is an abstract class:
>
>>abstract class AdminExecution {
>> public AdminExecution() {};
>>  public abstract Object execution() throws Exception;
>>  public Object execute() throws Exception {
>> Object returnObject = null;
>> Session sakaiSession = sessionManager.getCurrentSession();
>> String currentUserId = sakaiSession.getUserId();
>> String currentUserEid = sakaiSession.getUserEid();
>> if(!"admin".equals(currentUserId)) {
>> // current user not admin
>> try {
>> sakaiSession.setUserId("admin");
>> sakaiSession.setUserEid("admin");
>> authGroupService.refreshUser("admin");
>>  returnObject = execution();
>> } catch (Exception e) {
>> log.error("Error occurred while executing as Sakai Administrator",
>>e);
>> throw e;
>> } finally {
>> sakaiSession.setUserId(currentUserId);
>> sakaiSession.setUserEid(currentUserEid);
>> authGroupService.refreshUser(currentUserId);
>> }
>>  }else{
>> // current user is admin
>> try {
>> returnObject = execution();
>> } catch (Exception e) {
>> log.error("Error occurred while executing as Sakai Administrator",
>>e);
>> throw e;
>> }
>> }
>> return returnObject;
>> }
>> }
>
>>Hope it helps,
>>Nuno
>
>>On Fri, Jan 15, 2010 at 8:48 AM, Hai Vo Thanh <v0thanhhai at yahoo.com>
>>wrote:
>
>>> Dear all,
>>> is there any method that can set a user have admin privilege
>>temporally?
>>> Thanks.
>>> -----------
>>> Hai Vo
>>>
>>>
>>> _______________________________________________
>>> 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"
>>>
>
>
>
>>--
>>Nuno Fernandes
>
>>Profile    | http://facebook.com/nfgrilo |
>http://linkedin.com/in/nfgrilo
>>Web      | http://codingwithcoffee.com | http://twitter.com/nfgrilo
>>Work     | Analyst/Programmer @ UFP-UV [http://elearning.ufp.pt]
>>             | Analyst/Programmer @ Sakai Foundation [
>http://sakaiproject.org]
>>             | Sakai Fellow 2008 @ Sakai Foundation [
>http://confluence.sakaiproject.org//x/6oCTAQ]
>>Address | Universidade Fernando Pessoa  [http://www.ufp.pt]
>>             | Praça 9 de Abril, 349    | 4249-004 Porto
>>             | tel: + 351 22 507 13 00 | fax: + 351 22 550 82 69
>
>


-- 
Nuno Fernandes

Profile    | http://facebook.com/nfgrilo | http://linkedin.com/in/nfgrilo
Web      | http://codingwithcoffee.com | http://twitter.com/nfgrilo
Work     | Analyst/Programmer @ UFP-UV [http://elearning.ufp.pt]
             | Analyst/Programmer @ Sakai Foundation [http://sakaiproject.org]
             | Sakai Fellow 2008 @ Sakai Foundation [http://confluence.sakaiproject.org//x/6oCTAQ]
Address | Universidade Fernando Pessoa  [http://www.ufp.pt]
             | Praça 9 de Abril, 349    | 4249-004 Porto
             | tel: + 351 22 507 13 00 | fax: + 351 22 550 82 69



      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20100116/7233f735/attachment.html 


More information about the sakai-dev mailing list