2017-09-05 24 views
2

ユーザーの役割と権限(読み込み、更新、挿入など)を取得するためのxqueryの構築方法は?私はユーザーの役割を持っています。ユーザーの権限を取得できません。marklogicのユーザー権限を確認する方法

for $u in /sec:user 
    let $n := string($u/sec:user-name) 
order by $n 
return 
     <user> 
      <name>{ $n }</name> 
      { sec:get-role-names($u/sec:role-ids/sec:role-id) 
      !<role>{ string(.) }</role> } 
     </user> 

答えて

2

しばらくrjrudinの答えは、ユーザーに関連付けられたロールを見つけるのに役立ちます。ロールに添付されているアクセス許可については何も言いません。ただし、ドキュメントごとに権限が制御されるため、これを行うことはできません。

開始点として文書またはデータベースURIが必要です。あなたはxdmp:document-get-permissionsのような関数にuriを送ります。それはどのロールがその特定のURIに対してどのパーミッションを持っているかを返します。関心のあるユーザーに付与された役割を交えて、ユーザーが文書にアクセスしたり更新したりできるかどうかを知ることができます。

HTH!

2

これを試してみてください(:ロール名の機能が、以下あまりにML8上で動作すると、あなたがML9にしている場合、あなたは新しいxdmpを使用できることに注意してください):

xquery version "1.0-ml"; 
import module namespace sec="http://marklogic.com/xdmp/security" at "/MarkLogic/security.xqy"; 
for $u in /sec:user 
let $n := string($u/sec:user-name) 
order by $n 
return 
    <user> 
    <name>{$n}</name> 
    { 
     for $role-id in $u/sec:role-ids/sec:role-id 
     let $role-name := sec:get-role-names($role-id)/fn:string() 
     order by $role-name 
     return element role {$role-name} 
    } 
    </user> 
1

@rjrudinと@ grtjnの答えに追加すると、答えのもう一つの側面。 MarkLogicでは、ユーザにデフォルトの権限が与えられます。権限が指定されていない場合、新しい文書に適用されます。これらの権限はsec:user-get-default-permissionsから取得できます。しかし、一般的なアプローチは、ユーザー単位ではなくドキュメント単位でアクセス許可を調べることです。

関連する問題