MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/xml/xsl/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/xml/xsl/kutsuser.xsl

<?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>&#xa;</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&#xa; </xsl:text>
  <!-- Now generate CREATE_USER call -->
  <xsl:text>xs_principal.create_user(</xsl:text>
  <xsl:text>&#xa;     </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>&#xa;     </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>&#xa;     </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>&#xa;     </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>&#xa;     </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>&#xa; </xsl:text>
   <xsl:text>xs_principal.set_profile(</xsl:text>
   <xsl:text>&#xa;     </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>&#xa;     </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>&#xa;</xsl:text>
  <xsl:text>END;</xsl:text>
  <xsl:if test="$SQLTERMINATOR=1">
   <xsl:text>&#xa;</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>&#xa; </xsl:text>
  <xsl:text>xs_principal.set_user_status(</xsl:text>
  <xsl:text>&#xa;     </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>&#xa;     </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>&#xa; </xsl:text>
  <xsl:text>xs_principal.set_verifier(</xsl:text>
  <xsl:text>&#xa;     </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>&#xa;     </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>&#xa;     </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