Don't neglect the built-in xdmp security functions either: 
http://developer.marklogic.com/pubs/4.2/apidocs/Security.html

But that module import behavior doesn't sound right to me. Here's a test that I 
ran with 5.0-1:

xdmp:eval('
import module "http://marklogic.com/xdmp/security"; at "/MarkLogic/security.xqy";
xdmp:get-current-user(),
xdmp:get-current-roles()', (), <options xmlns="xdmp:eval">
{
  element user-id { xdmp:user('nobody') }
}
</options>),
xdmp:role('app-user')
=>
nobody
14918370877051183774
14918370877051183774

When I look at 
http://localhost:8001/role-info.xqy?section=security&role=14918370877051183774 
I see that the app-user role has very few privileges: xdmp:value, 
xdmp:with-namespaces, xdmp:xslt-invoke. I don't think any of those will have 
have any effect on module imports.

But just for fun I also tried removing the app-user role from nobody. I was 
still able to evaluate the above query, with the expected results:

nobody
14918370877051183774

So I think you may be hitting a bug in an older release, or perhaps something 
else is wrong with the install that you are developing against.

-- Mike 

On 14 Nov 2011, at 11:07 , Tim Meagher wrote:

> Hi Danny,
>  
> I was reviewing my code and noticed that the pertinent modules don’t actually 
> reference any of the sec: functions, so I removed the imports and no more 
> complaints.
>  
> Unfortunately the users do not have access to other custom modules in the 
> Modules database, so I’m wondering if there is a require roled for non-admin 
> users to access the Modules database.
>  
> Thank you!
>  
> Tim
>  
> From: [email protected] 
> [mailto:[email protected]] On Behalf OfDanny Sokolsky
> Sent: Monday, November 14, 2011 1:59 PM
> To: General MarkLogic Developer Discussion
> Subject: Re: [MarkLogic Dev General] XDMP-MODNOTFOUND: (err:XQST0059) Module 
> /opt/MarkLogic/Modules/MarkLogic/security.xqy not found
>  
> Hi Tim,
>  
> 4 points here:
>  
> 1)      If you want your code to import the security module, it should import 
> it at the path “/MarkLogic/security.xqy” as / resolves relative to the 
> Modules directory.
> 2)      Your users will not be able to run code in that module unless they 
> have the security role, and you do not want to give them the security role 
> (as then they can do almost anything).  So you will have to encapsulate that 
> code into your own function and then amp that function.
> 3)      Note the security.xqy needs to be run against the security database, 
> so you will probably need to do an eval or invoke against the security db.
> 4)      If what you are talking about is permissions as you say, then 
> security.xqy is likely not the tool you need.  Permissions are on documents, 
> not stored in the security db.  Users should be able to see the permissions 
> of documents that they have permissions to read (using 
> xdmp:document-get-permissions, for example).
>  
> I think point 1 is probably what you are running into, but I also think this 
> is probably not going to do what you think it is, so you might want to step 
> back and look at what you are trying to do.
>  
> -Danny
>  
> From: [email protected] 
> [mailto:[email protected]] On Behalf OfTim Meagher
> Sent: Monday, November 14, 2011 10:44 AM
> To: 'General MarkLogic Developer Discussion'
> Subject: [MarkLogic Dev General] XDMP-MODNOTFOUND: (err:XQST0059) Module 
> /opt/MarkLogic/Modules/MarkLogic/security.xqy not found
>  
> I have written a module that checks user permissions before deciding what 
> features they can access in a web form.  The code imports the security module 
> which is mapped to  /opt/MarkLogic/Modules/MarkLogic/security.xqy, but it 
> appears that non-admin users cannot find the security module.  Is there a 
> role that I can simply assign to the pertinent user to avoid this problem?  
> I’m running MarkLogic 4.1.
>  
> Thank you!
>  
> Tim Meagher
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general

_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to