Changes for page NotificationPreferenceService
Last modified by Julien Fleury on 2021/05/03 15:40
edited by Julien Fleury
on 2021/05/03 15:40
on 2021/05/03 15:40
edited by Julien Fleury
on 2020/12/12 16:56
on 2020/12/12 16:56
Change comment:
Install extension [org.xwiki.platform:xwiki-platform-notifications-ui/12.10]
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,47 +1,29 @@ 1 1 {{velocity}} 2 -#if ("$!request.user" != "") 3 - #if ($request.user.contains(".")) 4 - #set ($targetUser = $request.user) 5 - #else 6 - #set ($targetUser = "XWiki." + $request.user) 7 - #end 8 -#end 9 -#if ("$!request.target" == 'wiki') 10 - #set ($targetDoc = $xwiki.getDocument($services.model.createDocumentReference('', ['XWiki', 'Notifications', 'Code'], 'NotificationAdministration'))) 11 - #set ($targetRef = $services.wiki.getCurrentWikiReference()) 12 -#elseif ("$!request.target" == 'user') 13 - #set ($targetDoc = $xwiki.getDocument($targetUser)) 14 - #set ($targetRef = $targetUser) 15 -#end 16 -#if ("$!request.action" == "" && $request.method.equalsIgnoreCase('get')) 17 - This is a technical page for Notifications macro. 18 -#elseif (!$services.csrf.isTokenValid($request.csrf)) 19 - #set ($discard = $response.sendError(401, $services.localization.render('notifications.settings.error.badCSRF'))) 20 -#elseif ("$!request.target" == 'wiki' && !$hasAdmin) 21 - #set ($discard = $response.sendError(401)) 22 -#elseif ("$!request.action" == "" || "$!request.target" == "" || ("$!request.target" == 'user' && "$!request.user" == "")) 23 - #set ($discard = $response.sendError(400, $services.localization.render('notifications.settings.error.badParameters'))) 24 -#elseif ("$!request.action" == "setInterval") 25 - #if ("$!request.interval" == '' || "$!request.target" == 'wiki') 26 - #set ($discard = $response.sendError(400, $services.localization.render('notifications.settings.error.badParameters'))) 27 - #end 28 - #set ($userDoc = $xwiki.getDocument($targetUser)) 2 +#if ("$!request.interval" != '') 3 + #set ($userDoc = $xwiki.getDocument($xcontext.userReference)) 29 29 #set ($prefObj = $userDoc.getObject('XWiki.Notifications.Code.NotificationEmailPreferenceClass', true)) 30 30 #set ($discard = $prefObj.set('interval', $request.interval)) 31 31 #set ($discard = $userDoc.save('Update Notification Email Interval')) 32 -#elseif ("$!request.action" == "setDiffType") 33 - #if ("$!request.diffType" == '') 34 - #set ($discard = $response.sendError(400, $services.localization.render('notifications.settings.error.badParameters'))) 7 +#elseif ("$!request.diffType" != '') 8 + #set ($targetDoc = 0) 9 + #if ("$!request.target" == 'wiki' && $hasAdmin) 10 + #set ($targetDoc = $xwiki.getDocument($services.model.createDocumentReference('', ['XWiki', 'Notifications', 'Code'], 'NotificationAdministration'))) 11 + #elseif ("$!request.target" == 'user') 12 + #set ($targetDoc = $xwiki.getDocument($xcontext.userReference)) 35 35 #end 36 - #set ($prefObj = $targetDoc.getObject('XWiki.Notifications.Code.NotificationEmailPreferenceClass', true)) 37 - #set ($discard = $prefObj.set('diffType', $request.diffType)) 38 - #set ($discard = $targetDoc.save('Update Notification Email Diff Type')) 14 + #if ($targetDoc == 0) 15 + #set ($discard = $response.sendError(401)) 16 + #else 17 + #set ($prefObj = $targetDoc.getObject('XWiki.Notifications.Code.NotificationEmailPreferenceClass', true)) 18 + #set ($discard = $prefObj.set('diffType', $request.diffType)) 19 + #set ($discard = $targetDoc.save('Update Notification Email Diff Type')) 20 + #end 39 39 #elseif ("$!request.action" == 'savePreferences') 40 40 #try() 41 41 #if ("$!request.target" == 'wiki') 42 42 $services.notification.preferences.saveNotificationPreferencesForCurrentWiki($request.json) 43 43 #else 44 - $services.notification.preferences.saveNotificationPreferences($request.json , $targetRef)26 + $services.notification.preferences.saveNotificationPreferences($request.json) 45 45 #end 46 46 #end 47 47 #if ("$!exception" != '') ... ... @@ -49,10 +49,10 @@ 49 49 #end 50 50 #elseif ("$!request.action" == 'deleteFilterPreference') 51 51 #try() 52 - #if ( "$!request.target" == 'wiki')53 - $services.notification.filters.delete WikiFilterPreference($request.filterPreferenceId, $targetRef)34 + #if ($services.csrf.isTokenValid($request.csrf)) 35 + $services.notification.filters.deleteFilterPreference($request.filterPreferenceId) 54 54 #else 55 - $ services.notification.filters.deleteFilterPreference($request.filterPreferenceId,$targetRef)37 + $response.sendError(401, 'Bad CSRF Token') 56 56 #end 57 57 #end 58 58 #if ("$!exception" != '') ... ... @@ -60,10 +60,10 @@ 60 60 #end 61 61 #elseif ("$!request.action" == 'setFilterPreferenceEnabled') 62 62 #try() 63 - #if ( "$!request.target" == 'wiki')64 - $services.notification.filters.set WikiFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true'), $targetRef)45 + #if ($services.csrf.isTokenValid($request.csrf)) 46 + $services.notification.filters.setFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true')) 65 65 #else 66 - $ services.notification.filters.setFilterPreferenceEnabled($request.filterPreferenceId,$stringtool.equals("$!request.enabled",'true'), $targetRef)48 + $response.sendError(401, 'Bad CSRF Token') 67 67 #end 68 68 #end 69 69 #if ("$!exception" != '') ... ... @@ -71,40 +71,52 @@ 71 71 #end 72 72 #elseif ("$!request.action" == 'createScopeFilterPreference') 73 73 #try() 74 - #macro (saveScopeFilterPreference $reference) 75 - #if ("$!request.target" == 'wiki') 76 - $services.notification.filters.createWikiScopeFilterPreference($request.filterType, $request.filterFormats.split(','), $request.eventTypes.split(','), $reference, $targetRef) 77 - #else 78 - $services.notification.filters.createScopeFilterPreference($request.filterType, $request.filterFormats.split(','), $request.eventTypes.split(','), $reference, $targetRef) 56 + #if ($services.csrf.isTokenValid($request.csrf)) 57 + #macro (saveScopeFilterPreference $reference) 58 + $services.notification.filters.createScopeFilterPreference($request.filterType, $request.filterFormats.split(','), $request.eventTypes.split(','), $reference) 79 79 #end 80 - #e nd81 - # if ("$!request.wiki" != "")82 - # foreach($wikiRequest in $request.getParameterValues('wiki'))83 - #set ($reference=$services.model.createWikiReference($wikiRequest))84 - # saveScopeFilterPreference($reference)60 + #if ("$!request.wiki" != "") 61 + #foreach ($wikiRequest in $request.getParameterValues('wiki')) 62 + #set ($reference = $services.model.createWikiReference($wikiRequest)) 63 + #saveScopeFilterPreference($reference) 64 + #end 85 85 #end 86 - #end 87 - #if ("$!request.space" != "") 88 - #foreach ($spaceRequest in $request.getParameterValues('space')) 89 - #set ($reference = $services.model.resolveSpace($spaceRequest)) 90 - #saveScopeFilterPreference($reference) 66 + #if ("$!request.space" != "") 67 + #foreach ($spaceRequest in $request.getParameterValues('space')) 68 + SPACE REQUEST: $spaceRequest 69 + #set ($reference = $services.model.resolveSpace($spaceRequest)) 70 + #saveScopeFilterPreference($reference) 71 + #end 91 91 #end 92 - #e nd93 - # if ("$!request.page" != "")94 - # foreach($pageRequest in $request.getParameterValues('page'))95 - #set ($reference=$services.model.resolveDocument($pageRequest))96 - # saveScopeFilterPreference($reference)73 + #if ("$!request.page" != "") 74 + #foreach ($pageRequest in $request.getParameterValues('page')) 75 + #set ($reference = $services.model.resolveDocument($pageRequest)) 76 + #saveScopeFilterPreference($reference) 77 + #end 97 97 #end 79 + #else 80 + $response.sendError(401, 'Bad CSRF Token') 98 98 #end 99 99 #end 100 100 #if ("$!exception" != '') 101 101 $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") 102 102 #end 103 -#elseif ("$!request.action" == 'setAutoWatchMode') 86 +#elseif ("$!request.action" == 'setAutoWatchMode' || "$!request.action" == 'setDefaultAutoWatchMode') 104 104 #try() 105 - #set ($obj = $targetDoc.getObject('XWiki.Notifications.Code.AutomaticWatchModeClass', true)) 106 - #set ($discard = $obj.set('automaticWatchMode', $request.mode)) 107 - #set ($discard = $targetDoc.save('Update the automaticWatchMode.')) 88 + #if ($services.csrf.isTokenValid($request.csrf)) 89 + #if ($request.action == 'setAutoWatchMode') 90 + #set ($targetDoc = $xwiki.getDocument($xcontext.userReference)) 91 + #elseif (!$hasAdmin) 92 + $response.sendError(401, 'Unauthorized') 93 + #else 94 + #set ($targetDoc = $xwiki.getDocument($services.model.createDocumentReference('', ['XWiki', 'Notifications', 'Code'], 'NotificationAdministration'))) 95 + #end 96 + #set ($obj = $targetDoc.getObject('XWiki.Notifications.Code.AutomaticWatchModeClass', true)) 97 + #set ($discard = $obj.set('automaticWatchMode', $request.mode)) 98 + #set ($discard = $targetDoc.save('Update the automaticWatchMode.')) 99 + #else 100 + $response.sendError(401, 'Bad CSRF Token') 101 + #end 108 108 #end 109 109 #if ("$!exception" != '') 110 110 $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") ... ... @@ -111,10 +111,14 @@ 111 111 #end 112 112 #elseif ("$!request.action" == 'watchUser' || "$!request.action" == 'unwatchUser') 113 113 #try() 114 - #if ($request.action == 'watchUser') 115 - #set ($discard = $services.notification.watch.watchUser($request.user)) 108 + #if ($services.csrf.isTokenValid($request.csrf)) 109 + #if ($request.action == 'watchUser') 110 + #set ($discard = $services.notification.watch.watchUser($request.userId)) 111 + #else 112 + #set ($discard = $services.notification.watch.unwatchUser($request.userId)) 113 + #end 116 116 #else 117 - #set ($discard = $services.notification.watch.unwatchUser($request.user))115 + $response.sendError(401, 'Bad CSRF Token') 118 118 #end 119 119 #end 120 120 #if ("$!exception" != '')