1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- Licensed Materials - Property of IBM
- IBM Cognos Products: ps
- (C) Copyright IBM Corp. 2013
- US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- -->
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:xts="http://developer.cognos.com/schemas/xts/"
- xmlns:send="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/brl/1/"
- xmlns:form="http://developer.cognos.com/schemas/xts/portal/iFrmCmd/1/"
- xmlns:bus="http://developer.cognos.com/schemas/bibus/3/"
- xmlns:cam="http://developer.cognos.com/schemas/bibus/3/"
- exclude-result-prefixes="xsl xts send form bus">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
-
- <xsl:template match="/root/env/param[@name='impersonateTenantId']">
- <xsl:call-template name="impersonate">
- <xsl:with-param name="tenantId" select="/root/env/param[@name='impersonateTenantId']"/>
- <xsl:with-param name="cmdType" select="/root/env/param[@name='impersonateTenantCmd']"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="/root/command/form:impersonateTenant/form:env" name="impersonate">
- <xsl:param name="tenantId" select="/root/env/param[@name='checkbox_1']"/>
- <xsl:param name="cmdType" select="/root/env/param[@name='cmdType']"/>
- <xts:sequence>
- <xts:append>
- <send:request provider="cam">
- <cam:selectTenants xmlns:cam="http://developer.cognos.com/schemas/saCAMService/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <xsl:choose>
- <xsl:when test="$cmdType='read'">
- <readTenantID xsi:type="xsd:string"><xsl:value-of select="$tenantId"/></readTenantID>
- </xsl:when>
- <xsl:when test="$cmdType='write'">
- <writeTenantID xsi:type="xsd:string"><xsl:value-of select="$tenantId"/></writeTenantID>
- </xsl:when>
- <!-- otherwise exclude above nodes to cancel impersonate -->
- </xsl:choose>
- </cam:selectTenants>
- </send:request>
- </xts:append>
-
- <xts:append>
- <xsl:if test="$tenantId != '' and ($cmdType='read' or $cmdType='write')">
- <send:request provider="cm">
- <xts:transform src="transforms/CM/pre-process.xslt" processor="XSLT">
- <cm:query xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
- <cm:requests>
- <cm:query>
- <cm:search>/directory/tenants[@name='Tenants']/tenant[@tenantID='<xts:queryValue select="/root//*[local-name()='selectTenantsResponse']//*[local-name()='writeTenantID']"/>']</cm:search>
- <cm:properties>
- <cm:property name="defaultName"/>
- </cm:properties>
- </cm:query>
- <cm:query>
- <cm:search>/directory/tenants[@name='Tenants']/tenant[@tenantID='<xts:queryValue select="/root//*[local-name()='selectTenantsResponse']//*[local-name()='readTenantIDs']"/>']</cm:search>
- <cm:properties>
- <cm:property name="defaultName"/>
- </cm:properties>
- </cm:query>
- </cm:requests>
- </cm:query>
- </xts:transform>
- </send:request>
- </xsl:if>
- </xts:append>
- <xts:delete select="/root/session/param[@name='e_readTenantID']"/>
- <xts:delete select="/root/session/param[@name='e_writeTenantID']"/>
- <xts:delete select="/root/session/param[@name='e_writeTenantName']"/>
- <xts:append>
- <xsl:choose>
- <xsl:when test="$cmdType='read' or $cmdType='write'">
- <xts:append select="/root/session">
- <xsl:if test="$cmdType='read'">
- <param name="e_readTenantID"><xts:queryValue select="/root//*[local-name()='selectTenantsResponse']//*[local-name()='readTenantIDs']/*[local-name()='item'][1]"/></param>
- </xsl:if>
- <param name="e_writeTenantID"><xts:queryValue select="/root//*[local-name()='selectTenantsResponse']//*[local-name()='writeTenantID']"/></param>
- <param name="e_writeTenantName"><xts:queryValue select="(/root//*[local-name()='queryResponse']//*[local-name()='defaultName'])[1]/*[local-name()='value']"/></param>
- </xts:append>
- <xts:replace select="/root/session/param[@name='e_isImpersonating']">
- <param name="e_isImpersonating">true</param>
- </xts:replace>
- </xsl:when>
- <xsl:otherwise>
- <xts:replace select="/root/session/param[@name='e_isImpersonating']">
- <param name="e_isImpersonating">false</param>
- </xts:replace>
- </xsl:otherwise>
- </xsl:choose>
- <updateSession/>
- </xts:append>
- </xts:sequence>
- </xsl:template>
- </xsl:stylesheet>
|