%PDF- %PDF-
| Direktori : /home/waritko/jetty-distribution-9.4.21.v20190926/webapps/ROOT/templates/ |
| Current File : //home/waritko/jetty-distribution-9.4.21.v20190926/webapps/ROOT/templates/saverights.vm |
#set($fullname = $request.get("fullname"))
#set($uorg = $request.get("uorg"))
#set($right = $request.get("right")) ## right name: edit, view, comment...
#set($action = $request.get("action")) ## can be allow, deny or clear(delete) that right
#set($clsname = $request.get("clsname"))
## found allow or deny for the user or group
#set($founda = false)
#set($foundd = false)
#if ($!{services.csrf.isTokenValid("$!{request.getParameter('form_token')}")})
#foreach($obj in $doc.getObjects($clsname)) ## XWiki.XWikiGlobalRights or XWiki.XWikiRights
#set($pers = "$!obj.getProperty($uorg).getValue()")
#if($pers.matches("${regextool.quote($fullname)},?")) ## found the rule containing that person
#set($levels = "$obj.getProperty('levels').getValue()") ## get the levels
#if($obj.getProperty('allow').getValue() == 1) ## found allow rule
### if action = allow, add the right to the allow rule, if it does not exist;
### if action = deny, remove the right from the allow rule, if exists;
### if action = clear, remove the right from the allow rule, if exists
#set($founda = true)
#if($action == "allow")
#if(!$levels.matches(".*\b${right}\b.*")) ## the right is not in the allow list, add it
#set($levels = $levels + "," + $right)
##1. person: $pers; rule: allow; action: allow; levels: $levels
$doc.getObject($clsname, $obj.number).set('levels', $levels) ## set the new levels
#end
#else ## deny or clean action
#set($i = $levels.indexOf($right))
#if($i > -1) ## the right was found in the allow levels, remove it
#if($i == 0)
#set($levels = $levels.replaceAll("\b${right}(,|$)", ""))
#else
#set($levels = $levels.replaceAll(",${right}\b", ""))
#end
#end
##2. person: $pers; rule: allow; action: deny/clean; levels: $levels
#if($levels != "")
$doc.getObject($clsname, $obj.number).set('levels', $levels) ## set the new levels
#else ## no other righs in the levels, remove the rule completely
#set($discard = $doc.removeObject($obj))
#end
#end
#else ## found deny rule
#set($foundd = true)
### if action = allow, delete the right from the deny rule, if exists;
### if action = deny, add the right to the deny rule, if it does not exist;
### if action = clear, remove the right from the deny rule, if exists
#if($action == "deny")
#if(!$levels.matches(".*\b${right}\b.*")) ## the right is not in the allow list, add it
#set($levels = $levels + "," + $right)
##3. person: $pers; rule: deny; action:deny; levels: $levels
$doc.getObject($clsname, $obj.number).set('levels', $levels) ## set the new levels
#end
#else ## allow or clean action
#set($i = $levels.indexOf($right))
#if($i > -1) ## the right was found in the allow levels, remove it
#if($i == 0)
#set($levels = $levels.replaceAll("\b${right}(,|$)", ""))
#else
#set($levels = $levels.replaceAll(",${right}\b", ""))
#end
#end
##4. person: $pers; rule: deny; action: allow/clean; levels: $levels
#if($levels != "")
$doc.getObject($clsname, $obj.number).set('levels', $levels) ## set the new levels
#else ## no other righs in the levels, remove the rule completely
#set($discard = $doc.removeObject($obj))
#end
#end
#end ## end get property
#elseif($pers.matches("^(.*,)?${regextool.quote($fullname)}(,.*)?$")) ## The person is in a multiple selection rule, remove it from there.
#set($pers = $pers.replaceAll("^${fullname}(,|$)", ""))
#set($pers = $pers.replaceAll("(^|,)${fullname}(,|$)", "$2"))
$doc.getObject($clsname, $obj.number).set($uorg, $pers)
##5. person: $pers
#end
#end ## end foreach existing rule
#if(($founda == false) && ($action == "allow"))
## could not find the rule -> create one
#set($obj = $doc.newObject($clsname))
## set the new rules
$obj.set($uorg, $fullname)
$obj.set('levels', $right)
##6. person: $fullname; rule: allow; action: allow; levels: $right
$obj.set('allow', '1')
#end
#if(($foundd == false) && ($action == "deny"))
## could not find the rule -> create one
#set($obj = $doc.newObject($clsname))
## set the new rules
$obj.set($uorg, $fullname)
$obj.set('levels', $right)
##7. person: $fullname; rule: deny; action: deny; levels: $right
$obj.set('allow', '0')
#end
$doc.save($services.localization.render('platform.core.rightsManagement.saveComment', [${action}, ${right}, ${fullname}]), true)
SUCCESS
#end