permissions.xsl 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed Materials - Property of IBM
  4. IBM Cognos Products: ps
  5. (C) Copyright IBM Corp. 2005, 2011
  6. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. -->
  8. <!--
  9. Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
  10. Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
  11. -->
  12. <!-- This stylesheet defines global portal variables and templates. -->
  13. <xsl:stylesheet version="1.0"
  14. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  15. xmlns:out="dummy-uri"
  16. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  17. xmlns:xts="http://developer.cognos.com/schemas/xts/"
  18. xmlns:pm="http://developer.cognos.com/schemas/xts/pm"
  19. xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/"
  20. exclude-result-prefixes="xsl xtsext xts pm cm">
  21. <xsl:output method="xml" encoding="UTF-8" indent="no"/>
  22. <xsl:namespace-alias stylesheet-prefix="out" result-prefix="xsl"/>
  23. <xsl:template match="pm:permissions">
  24. <xsl:param name="origin" select="@origin"/>
  25. <!-- Current object class -->
  26. <out:variable name="oclass"><out:value-of select="{$origin}cm:objectClass"/></out:variable>
  27. <!-- Current object's permissions -->
  28. <out:variable name="objlvl"><out:value-of select="concat(' ',{$origin}cm:permissions,' ')"/></out:variable>
  29. <!-- Current target object's permissions for 'shortcut' object -->
  30. <out:variable name="trgobjlvl">
  31. <out:if test="$oclass='shortcut'">
  32. <out:value-of select="concat(' ',{$origin}cm:target/*/cm:permissions,' ')"/>
  33. </out:if>
  34. </out:variable>
  35. <!-- Current base object's permissions for 'reportView' object (reportView and shortcut) and agentDefinitionView and pp8 view-->
  36. <out:variable name="bsobjlvl">
  37. <out:choose>
  38. <!-- shortcut to a reportview or agentDefinitionView to a report -->
  39. <out:when test="$oclass='shortcut' and ({$origin}cm:target/*/cm:objectClass='reportView' or {$origin}cm:target/*/cm:objectClass='agentDefinitionView' or {$origin}cm:target/*/cm:objectClass='powerPlay8ReportView')">
  40. <out:if test="{$origin}cm:target/*/cm:base/*/cm:permissions">
  41. <out:value-of select="concat(' ',{$origin}cm:target/*/cm:base/*/cm:permissions,' ')"/>
  42. </out:if>
  43. </out:when>
  44. <!-- reportview or agentDefinitionView or pp8View to a report -->
  45. <out:when test="$oclass='reportView' or $oclass='agentDefinitionView' or $oclass='powerPlay8ReportView'">
  46. <out:value-of select="concat(' ',{$origin}cm:base/*/cm:permissions,' ')"/>
  47. </out:when>
  48. </out:choose>
  49. </out:variable>
  50. <!-- Variable created, which contains all permissions for the current object; can be a combination of current and determined permissions -->
  51. <out:variable name="accessAvailable">
  52. <out:choose>
  53. <out:when test="$oclass='shortcut'">
  54. <out:value-of select="' '"/>
  55. <out:if test="$objlvl!=''">
  56. <out:if test="contains($objlvl,' read ')">scr </out:if>
  57. <out:if test="contains($objlvl,' write ')">scw </out:if>
  58. </out:if>
  59. <out:if test="$trgobjlvl!=''">
  60. <out:if test="contains($trgobjlvl,' read ')">r </out:if>
  61. <out:if test="contains($trgobjlvl,' write ')">w </out:if>
  62. <out:if test="contains($trgobjlvl,' traverse ')">t </out:if>
  63. <out:if test="contains($trgobjlvl,' setPolicy ')">sp </out:if>
  64. </out:if>
  65. <!-- shortcut to a target -->
  66. <out:if test="$bsobjlvl='' and $trgobjlvl!='' and contains($trgobjlvl,' execute ')">x </out:if>
  67. <!-- NOTE: CM supports only 1-level refprop - this means the permission data on the target report is _not_ -->
  68. <!-- available. This code will never evaluate to TRUE until CM supports multiple-level refprop'ing -->
  69. <!-- shortcut to a reportview to a report or to an agentDefinitionView to an agentDefinition or to a pp8view to a powerplay8-->
  70. <out:if test="$bsobjlvl!='' and contains($bsobjlvl,' execute ') and $trgobjlvl!='' and contains($trgobjlvl,' execute ')">x </out:if>
  71. </out:when>
  72. <out:otherwise>
  73. <out:value-of select="' '"/>
  74. <out:if test="contains($objlvl,' read ')">r </out:if>
  75. <out:if test="contains($objlvl,' write ')">w </out:if>
  76. <out:if test="contains($objlvl,'traverse')">t </out:if>
  77. <out:if test="contains($objlvl,'setPolicy')">sp </out:if>
  78. <out:choose>
  79. <out:when test="$oclass='reportView' or $oclass='agentDefinitionView' or $oclass='powerPlay8ReportView'">
  80. <out:if test="$bsobjlvl!='' and contains($bsobjlvl,' execute ') and $objlvl!='' and contains($objlvl,'execute')">x </out:if>
  81. </out:when>
  82. <out:otherwise>
  83. <out:if test="contains($objlvl,'execute')">x </out:if>
  84. </out:otherwise>
  85. </out:choose>
  86. </out:otherwise>
  87. </out:choose>
  88. </out:variable>
  89. <out:variable name="canRead" select="contains($accessAvailable, ' r ')"/>
  90. <out:variable name="canWrite" select="contains($accessAvailable, ' w ')"/>
  91. <out:variable name="canExecute" select="contains($accessAvailable, ' x ')"/>
  92. <out:variable name="canTraverse" select="contains($accessAvailable, ' t ')"/>
  93. <out:variable name="canSetPolicy" select="contains($accessAvailable, ' sp ')"/>
  94. <out:variable name="canReadShort">
  95. <out:choose>
  96. <out:when test="$oclass='shortcut'"><out:value-of select="contains($accessAvailable,' scr ')"/></out:when>
  97. <out:otherwise><out:value-of select="contains($accessAvailable,' r ')"/></out:otherwise>
  98. </out:choose>
  99. </out:variable>
  100. <out:variable name="canWriteShort">
  101. <out:choose>
  102. <out:when test="$oclass='shortcut'"><out:value-of select="contains($accessAvailable,' scw ')"/></out:when>
  103. <out:otherwise><out:value-of select="contains($accessAvailable,' w ')"/></out:otherwise>
  104. </out:choose>
  105. </out:variable>
  106. <out:variable name="outputFormat">
  107. <out:choose>
  108. <out:when test="( {$origin}cm:target/*/cm:defaultOutputFormat and not( {$origin}cm:target/*/cm:defaultOutputFormat/@nil ) )">
  109. <out:value-of select="{$origin}cm:target/*/cm:defaultOutputFormat/cm:string[1]"/>
  110. </out:when>
  111. <out:when test="( {$origin}cm:defaultOutputFormat and not( {$origin}cm:defaultOutputFormat/@nil ) )">
  112. <out:value-of select="{$origin}cm:defaultOutputFormat/cm:string[1]"/>
  113. </out:when>
  114. </out:choose>
  115. </out:variable>
  116. <!--
  117. ==========================================================
  118. = RTC TASK 4127 - Avoid running a report when a view is possible but not in user's default format
  119. = Set the output_format value regardless if consumable format or not.
  120. ==========================================================
  121. -->
  122. <out:variable name="output_format" select="$outputFormat"/>
  123. </xsl:template>
  124. <xsl:template match="*">
  125. <xsl:copy>
  126. <xsl:copy-of select="@*"/>
  127. <xsl:apply-templates/>
  128. </xsl:copy>
  129. </xsl:template>
  130. </xsl:stylesheet>