Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save prestonmcgowan/0150567583238fb4b20f7e49a210f5d4 to your computer and use it in GitHub Desktop.
Save prestonmcgowan/0150567583238fb4b20f7e49a210f5d4 to your computer and use it in GitHub Desktop.
xquery version "1.0-ml";
import module namespace sec="http://marklogic.com/xdmp/security" at "/MarkLogic/security.xqy";
declare function local:get-role-names($role-ids) {
xdmp:invoke-function(
function() {
sec:get-role-names($role-ids)
},
<options xmlns="xdmp:eval">
<database>{xdmp:security-database()}</database>
</options>
)
};
text {
"(",
fn:string-join(
for $p in xdmp:document-get-permissions("/sources/asdf/0687d420902_metadata.xml")
let $capability := $p/sec:capability/text()
let $role-name := local:get-role-names($p/sec:role-id/text())
return fn:concat('xdmp:permission("', $role-name, '", "', $capability, '")')
, ", "
),
")"
}
@prestonmcgowan
Copy link
Author

Sample output:
( xdmp:permission("rest-extension-user", "execute"), xdmp:permission("rest-admin", "update"), xdmp:permission("rest-admin", "read") )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment