MINI MINI MANI MO
<?xml version="1.0"?>
<!--
Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
NAME
kutsuser.xsl
DESCRIPTION
XSLT stylesheet for XML => DDL conversion of ku$_xsuser_t ADTs
NOTES
Do NOT modify this file under any circumstance. Copy the file
if you wish to use this stylesheet with an external XML/XSL parser
MODIFIED MM/DD/YY
rapayne 10/30/13 - acount for changes to verifier type constants:
XS_SALTED_SHA1 and XS_SHA512
rapayne 09/21/13 - Bug 17321518: RAS profile support.
bwright 08/21/13 - Bug 17312600: Remove hard tabs from DP src code
rapayne 10/03/12 - support mixed case names.
rapayne 08/31/11 - Triton rename to Real Application Security (RAS).
Object names will be changed from TS_* to XS_*.
rapayne 07/17/10 - Creation
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Import required scripts -->
<xsl:import href="kucommon.xsl"/>
<!-- Top-level parameters -->
<xsl:param name="PRETTY">1</xsl:param>
<xsl:param name="EXPORT">0</xsl:param>
<xsl:param name="SQLTERMINATOR">1</xsl:param>
<!-- params for parse -->
<xsl:param name="PRS_DDL">0</xsl:param>
<xsl:param name="PRS_DELIM">\{]`</xsl:param>
<xsl:param name="PRS_VERB">0</xsl:param>
<xsl:param name="PRS_OBJECT_TYPE">0</xsl:param>
<xsl:param name="PRS_SCHEMA">0</xsl:param>
<xsl:param name="PRS_NAME">0</xsl:param>
<xsl:param name="PRS_GRANTEE">0</xsl:param>
<xsl:param name="PRS_GRANTOR">0</xsl:param>
<xsl:param name="PRS_BASE_OBJECT_SCHEMA">0</xsl:param>
<xsl:param name="PRS_BASE_OBJECT_NAME">0</xsl:param>
<xsl:param name="PRS_BASE_OBJECT_TYPE">0</xsl:param>
<xsl:template match="XS_USER_T">
<!-- hack - somehow there is a space being displayed which
screws up the identation. So, realign things with a newline
-->
<xsl:text>
</xsl:text>
<xsl:call-template name="DoParse">
<xsl:with-param name="Verb">CREATE</xsl:with-param>
<xsl:with-param name="ObjectType">XS_USER</xsl:with-param>
<xsl:with-param name="NameNode" select="NAME"/>
</xsl:call-template>
<xsl:call-template name="callCreateUser">
<xsl:with-param name="user" select="NAME"/>
<xsl:with-param name="schema" select="XS_PRIN/SCHEMA"/>
<xsl:with-param name="prinNode" select="XS_PRIN"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="callCreateUser">
<xsl:param name="user" select="''"/>
<xsl:param name="schema" select="''"/>
<xsl:param name="prinNode" select="''"/>
<!-- *******************************************************************
Template: callCreateUser
Description: Anon plsql block will look something like the following:
BEGIN
xs_principal.create_user(
name=>'"XSUSER4"',
external_source=>'AbC',
status=>XS_PRINCIPAL.ACTIVE);
xs_principal.set_profile(
user => '"XSUSER4"',
profile => '"DEFAULT"');
xs_principal.set_user_status(
user => '"XSUSER4"',
status => XS_PRINCIPAL.EXPIRED);
xs_principal.set_user_status(
user => '"XSUSER4"',
status => XS_PRINCIPAL.LOCKED);
END;
Parameters:
user - name of user to create
schema - user is associated with a schema
prinNode - <PRIN>
******************************************************************** -->
<xsl:text>BEGIN
 </xsl:text>
<!-- Now generate CREATE_USER call -->
<xsl:text>xs_principal.create_user(</xsl:text>
<xsl:text>
 </xsl:text>
<!-- generate NAME arg -->
<xsl:text>name=></xsl:text>
<xsl:call-template name="TSQuoteObject">
<xsl:with-param name="Object" select="$user"/>
</xsl:call-template>
<!-- generate SCHEMA arg if present -->
<xsl:if test="$schema">
<xsl:text>,</xsl:text>
<xsl:text>
 </xsl:text>
<xsl:text>schema=></xsl:text>
<xsl:call-template name="TSQuoteObject">
<xsl:with-param name="Schema" select="$schema"/>
</xsl:call-template>
</xsl:if>
<!-- Process START_DATE and END_DATE if present
Note: the call to XSDate declares to plsql symbols:
start_date and end_date
which will be used as arg values for the call to create_role
-->
<xsl:call-template name="XSDateArgs">
<xsl:with-param name="startDate" select="$prinNode/START_DATE"/>
<xsl:with-param name="endDate" select="$prinNode/END_DATE"/>
</xsl:call-template>
<!-- Generate EXTERNAL_SOURCE arg if present -->
<xsl:if test="$prinNode/EXT_SRC">
<xsl:text>,</xsl:text>
<xsl:text>
 </xsl:text>
<xsl:text>external_source=></xsl:text>
<xsl:call-template name="SingleQuotedName">
<xsl:with-param name="NameNode" select="$prinNode/EXT_SRC"/>
</xsl:call-template>
</xsl:if>
<!-- Generate Status arg if present -->
<xsl:if test="$prinNode/STATUS">
<xsl:text>,</xsl:text>
<xsl:text>
 </xsl:text>
<xsl:text>status=></xsl:text>
<xsl:choose>
<xsl:when test="$prinNode/STATUS = 1">XS_PRINCIPAL.ACTIVE</xsl:when>
<xsl:when test="$prinNode/STATUS = 2">XS_PRINCIPAL.INACTIVE</xsl:when>
</xsl:choose>
</xsl:if>
<!-- Generate Description arg if present -->
<xsl:if test="$prinNode/DESCRIPTION">
<xsl:text>,</xsl:text>
<xsl:text>
 </xsl:text>
<xsl:text>description=></xsl:text>
<xsl:call-template name="SingleQuotedName">
<xsl:with-param name="NameNode" select="$prinNode/DESCRIPTION"/>
</xsl:call-template>
</xsl:if>
<!-- close arglist for call to CREATE_USER -->
<xsl:text>);</xsl:text>
<!-- generate SET_PROFILE call -->
<xsl:if test="$prinNode/PFNAME">
<xsl:text>
 </xsl:text>
<xsl:text>xs_principal.set_profile(</xsl:text>
<xsl:text>
 </xsl:text>
<!-- generate NAME arg -->
<xsl:text>user => </xsl:text>
<xsl:call-template name="TSQuoteObject">
<xsl:with-param name="Object" select="$user"/>
</xsl:call-template>
<xsl:text>,</xsl:text>
<xsl:text>
 </xsl:text>
<xsl:text>profile => </xsl:text>
<xsl:call-template name="TSQuoteObject">
<xsl:with-param name="Object" select="$prinNode/PFNAME"/>
</xsl:call-template>
<!-- close arglist for call to SET_PROFILE -->
<xsl:text>);</xsl:text>
</xsl:if>
<!-- generate SET_USER_STATUS call -->
<!-- status = EXPIRED -->
<xsl:if test="$prinNode/ASTATUS=1 or
$prinNode/ASTATUS=2 or
$prinNode/ASTATUS=5 or
$prinNode/ASTATUS=6 or
$prinNode/ASTATUS=9 or
$prinNode/ASTATUS=10">
<xsl:call-template name="doAcctStatus">
<xsl:with-param name="user" select="$user"/>
<xsl:with-param name="status">XS_PRINCIPAL.EXPIRED</xsl:with-param>
</xsl:call-template>
</xsl:if>
<!-- status = LOCKED -->
<xsl:if test="$prinNode/ASTATUS=4 or
$prinNode/ASTATUS=8 or
$prinNode/ASTATUS=5 or
$prinNode/ASTATUS=6 or
$prinNode/ASTATUS=9 or
$prinNode/ASTATUS=10">
<xsl:call-template name="doAcctStatus">
<xsl:with-param name="user" select="$user"/>
<xsl:with-param name="status">XS_PRINCIPAL.LOCKED</xsl:with-param>
</xsl:call-template>
</xsl:if>
<!-- generate SET_VIERIFIER call -->
<xsl:if test="$prinNode/VERIFIER">
<xsl:call-template name="doVerifier">
<xsl:with-param name="user" select="$user"/>
<xsl:with-param name="verifier" select="$prinNode/VERIFIER"/>
<xsl:with-param name="verifierType" select="$prinNode/VERIFIER_TYPE"/>
</xsl:call-template>
</xsl:if>
<xsl:text>
</xsl:text>
<xsl:text>END;</xsl:text>
<xsl:if test="$SQLTERMINATOR=1">
<xsl:text>
</xsl:text>
<xsl:text>/</xsl:text>
</xsl:if>
</xsl:template>
<xsl:template name="doAcctStatus">
<xsl:param name="user" select="''"/>
<xsl:param name="status" select="''"/>
<xsl:param name="prinNode" select="''"/>
<!-- *******************************************************************
Template: doAcctStatus
Description: generate a call to the xs_principal.set_user_status
api. Valid status values are as follows (admin/xsprin.sql)
ACTIVE CONSTANT PLS_INTEGER := 1;
INACTIVE CONSTANT PLS_INTEGER := 2;
UNLOCK CONSTANT PLS_INTEGER := 3;
EXPIRED CONSTANT PLS_INTEGER := 4;
LOCKED CONSTANT PLS_INTEGER := 5;
Parameters:
user - name of user to set status
status - status to set
******************************************************************** -->
<xsl:text>
 </xsl:text>
<xsl:text>xs_principal.set_user_status(</xsl:text>
<xsl:text>
 </xsl:text>
<xsl:text>user => </xsl:text>
<xsl:call-template name="TSQuoteObject">
<xsl:with-param name="Object" select="$user"/>
</xsl:call-template>
<xsl:text>,</xsl:text>
<xsl:text>
 </xsl:text>
<xsl:text>status => </xsl:text>
<xsl:value-of select="$status"/>
<!-- close arglist for call to SET_USER_STATUS -->
<xsl:text>);</xsl:text>
</xsl:template>
<xsl:template name="doVerifier">
<xsl:param name="user" select="''"/>
<xsl:param name="verifier" select="''"/>
<xsl:param name="verifierType" select="''"/>
<!-- *******************************************************************
Template: doVerifier
Description: generate a call to the xs_principal.set_verifier
api. Valid type values are as follows (admin/xsprin.sql)
XS_SHA512 (default) CONSTANT PLS_INTEGER := 1 ;
XS_SALTED_SHA1 CONSTANT PLS_INTEGER := 2 ;
Parameters:
user - name of user to set verifier
verifier - verifier to set
verifierType - verifier type (see above)
******************************************************************** -->
<xsl:text>
 </xsl:text>
<xsl:text>xs_principal.set_verifier(</xsl:text>
<xsl:text>
 </xsl:text>
<!-- User arg -->
<xsl:text>user => </xsl:text>
<xsl:call-template name="TSQuoteObject">
<xsl:with-param name="Object" select="$user"/>
</xsl:call-template>
<xsl:text>,</xsl:text>
<xsl:text>
 </xsl:text>
<xsl:text>verifier => </xsl:text>
<xsl:call-template name="SingleQuotedName">
<xsl:with-param name="NameNode" select="$verifier"/>
</xsl:call-template>
<xsl:text>,</xsl:text>
<xsl:text>
 </xsl:text>
<xsl:text>type => </xsl:text>
<xsl:choose>
<xsl:when test="$verifierType = 1">XS_PRINCIPAL.XS_SALTED_SHA1</xsl:when>
<xsl:when test="$verifierType = 2">XS_PRINCIPAL.XS_SHA512</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$verifierType "/>
</xsl:otherwise>
</xsl:choose>
<!-- close arglist for call to SET_VERIFIER-->
<xsl:text>);</xsl:text>
</xsl:template>
</xsl:stylesheet>
OHA YOOOO