Skip to content

Commit e8acc9d

Browse files
committed
XWIKI-20337: Bad condition for editing notification filter preferences
1 parent c8c6545 commit e8acc9d

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

xwiki-platform-core/xwiki-platform-notifications/xwiki-platform-notifications-ui/src/main/resources/XWiki/Notifications/Code/NotificationPreferenceService.xml

+5-2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
<syntaxId>xwiki/2.1</syntaxId>
3838
<hidden>true</hidden>
3939
<content>{{velocity}}
40+
#set($isActionAllowed = false)
4041
#if ("$!request.user" != "")
4142
#if ($request.user.contains("."))
4243
#set ($targetUser = $request.user)
@@ -47,15 +48,17 @@
4748
#if ("$!request.target" == 'wiki')
4849
#set ($targetDoc = $xwiki.getDocument($services.model.createDocumentReference('', ['XWiki', 'Notifications', 'Code'], 'NotificationAdministration')))
4950
#set ($targetRef = $services.wiki.getCurrentWikiReference())
51+
#set($isActionAllowed = $hasAdmin)
5052
#elseif ("$!request.target" == 'user')
5153
#set ($targetDoc = $xwiki.getDocument($targetUser))
52-
#set ($targetRef = $targetUser)
54+
#set ($targetRef = $services.model.resolveDocument($targetUser))
55+
#set($isActionAllowed = ($services.security.authorization.hasAccess('admin', $requestedUserDocRef) || $xcontext.userReference.equals($targetRef)))
5356
#end
5457
#if ("$!request.action" == "" &amp;&amp; $request.method.equalsIgnoreCase('get'))
5558
This is a technical page for Notifications macro.
5659
#elseif (!$services.csrf.isTokenValid($request.csrf))
5760
#set ($discard = $response.sendError(401, $services.localization.render('notifications.settings.error.badCSRF')))
58-
#elseif ("$!request.target" == 'wiki' &amp;&amp; !$hasAdmin)
61+
#elseif (!$isActionAllowed)
5962
#set ($discard = $response.sendError(401))
6063
#elseif ("$!request.action" == "" || "$!request.target" == "" || ("$!request.target" == 'user' &amp;&amp; "$!request.user" == ""))
6164
#set ($discard = $response.sendError(400, $services.localization.render('notifications.settings.error.badParameters')))

0 commit comments

Comments
 (0)