Changeset 4366


Ignore:
Timestamp:
01/28/14 17:11:54 (10 years ago)
Author:
andmor
Message:

Added resource endpoint (SOURCE and SINK verbs) for the user IDs authorized to access a schema.
Data layer cache reviewed due to new SINK call.
Improved log messages when SINK or NEW verbs are called on the 'user' resource.

Location:
cats/SCHEMAcat/trunk/urn.org.isocat.schemacat.access.data
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • cats/SCHEMAcat/trunk/urn.org.isocat.schemacat.access.data/access/pagedSchemas.dpml

    r3873 r4366  
    6262        <argument name="pageSize">arg:pageSize</argument>
    6363    </request>
     64    <request>
     65        <identifier>active:attachGoldenThread</identifier>
     66        <argument name="id">pagedSchemasList</argument>
     67    </request>
    6468    <sloot-debug>
    6569        <request>
  • cats/SCHEMAcat/trunk/urn.org.isocat.schemacat.access.data/access/schemaAuthorizedIDs.dpml

    r3938 r4366  
    11<?xml version="1.0" encoding="UTF-8"?>
    2 <sequence debug="false">
    3     <request assignment="response">
    4         <header name="exclude-dependencies">
    5             <literal type="boolean">true</literal>
    6         </header>
    7         <identifier>active:org.basex.query</identifier>
    8         <argument name="operator">
    9             <literal type="xml">
    10                 <query xmlns:sc="http://www.isocat.org/ns/schemacat">
    11                     <ids>{
    12                         for $userID in //sc:schema[@xml:id = $schemaID]/sc:access/sc:user/@ref
    13                         return if (contains(//sc:schema[@xml:id = $schemaID]/sc:access/sc:all/@actions ,'r'))
    14                         then <id>ALL</id>
    15                         else <id>{$userID}</id>
    16                         }
    17                     </ids>
    18                 </query>
    19             </literal>
    20         </argument>
    21         <argument name="schemaID">arg:schemaID</argument>
     2<sequence debug="true">
     3    <switch assignment="response">
     4        <cond>
     5            <request>
     6                <identifier>active:sloot.xpath2</identifier>
     7                <argument name="operand">arg:verb</argument>
     8                <argument name="operator">
     9                    <literal type="string">boolean(.='SOURCE')</literal>
     10                </argument>
     11            </request>
     12        </cond>
     13        <then>
     14            <sequence>
     15                <request assignment="response">
     16                    <header name="exclude-dependencies">
     17                        <literal type="boolean">true</literal>
     18                    </header>
     19                    <identifier>active:org.basex.query</identifier>
     20                    <argument name="operator">
     21                        <literal type="xml">
     22                            <query xmlns:sc="http://www.isocat.org/ns/schemacat">
     23                                <ids>{
     24                                    for $user in //sc:schema[@xml:id = $schemaID]/sc:access/*
     25                                    return if (name($user) eq 'sc:all' and contains($user/@actions ,'r'))
     26                                            then <id actions="{data($user/@actions)}">ALL</id>
     27                                            else <id actions="{data($user/@actions)}"
     28                                                     role="{data($user/@role)}">{string($user/@ref)}</id>
     29                                    }
     30                                </ids>
     31                            </query>
     32                        </literal>
     33                    </argument>
     34                    <argument name="schemaID">arg:schemaID</argument>
     35                </request>
     36                <sloot-debug>
     37                    <log>
     38                        <level>INFO</level>
     39                        <message>
     40                            <literal type="string">[access.data] [%1] requested users authorized to access schema with ID: [%2].&#xA;[&#xA;%3&#xA;]</literal>
     41                        </message>
     42                        <param>
     43                            <request>
     44                                <identifier>active:xpath2</identifier>
     45                                <argument name="operand">scratch:user</argument>
     46                                <argument name="operator">
     47                                    <literal type="string">string(/sc:user/@xml:id)</literal>
     48                                </argument>
     49                            </request>
     50                        </param>
     51                        <param>arg:schemaID</param>
     52                        <param>
     53                            <request>
     54                                <identifier>response-string</identifier>
     55                                <verb>TRANSREPT</verb>
     56                                <representation>java.lang.String</representation>
     57                                <argument name="primary">this:response</argument>
     58                            </request>
     59                        </param>
     60                    </log>
     61                    <request>
     62                        <verb>SINK</verb>
     63                        <identifier>res:/debug/org.isocat.schemacat.access.data.schema.authorizedIDs.source.response.xml</identifier>
     64                        <argument name="primary">this:response</argument>
     65                    </request>
     66                </sloot-debug>
     67            </sequence>
     68        </then>
     69        <cond>
     70            <request>
     71                <identifier>active:sloot.xpath2</identifier>
     72                <argument name="operand">arg:verb</argument>
     73                <argument name="operator">
     74                    <literal type="string">boolean(.='SINK')</literal>
     75                </argument>
     76            </request>
     77        </cond>
     78        <then>
     79            <if>
     80                <cond>
     81                    <request>
     82                        <identifier>arg:authorizedUsers</identifier>
     83                        <verb>EXISTS</verb>
     84                    </request>
     85                </cond>
     86                <then>
     87                    <sequence>
     88                        <request assignment="response">
     89                            <header name="exclude-dependencies">
     90                                <literal type="boolean">true</literal>
     91                            </header>
     92                            <identifier>active:org.basex.query</identifier>
     93                            <argument name="operator">
     94                                <literal type="xml">
     95                                    <query xmlns:sc="http://www.isocat.org/ns/schemacat">
     96                                        let $newAccessRules :=
     97                                        <sc:access>
     98                                            {
     99                                            for $userID in $authorizedUsers/id
     100                                            return
     101                                                if ($userID/text() eq 'ALL')
     102                                                then
     103                                                    <sc:all actions="r"/>
     104                                                else
     105                                                    element sc:user {
     106                                                        attribute role {
     107                                                            if(exists($userID/@role))
     108                                                            then $userID/@role
     109                                                            else 'user'},
     110                                                        attribute ref {
     111                                                            if(exists($userID/text()))
     112                                                            then $userID/text()
     113                                                            else error(xs:QName('sc:accessUserIdNotSupplied'),'ERROR updating schema access: user ID not supplied!')},
     114                                                        attribute actions {
     115                                                            if(exists($userID/@actions))
     116                                                            then $userID/@actions
     117                                                            else 'r'}
     118                                                    }
     119                                            }
     120                                        </sc:access>
     121                                        return
     122                                            if (not(exists($schemaID)) or $schemaID eq '')
     123                                            then
     124                                                error(xs:QName('sc:accessSchemaIdNotSupplied'),'ERROR updating schema access: user ID not supplied!')
     125                                            else
     126                                                (db:output(element sc:response {attribute success {'true'}, element sc:written-data {$newAccessRules} }), replace node /sc:schema[@xml:id = $schemaID]/sc:access with $newAccessRules)
     127                                    </query>
     128                                </literal>
     129                            </argument>
     130                            <argument name="schemaID">arg:schemaID</argument>
     131                            <argument name="authorizedUsers">arg:authorizedUsers</argument>
     132                        </request>
     133                        <request>
     134                            <identifier>active:cutGoldenThread</identifier>
     135                            <argument name="id">schemaAuthorizedIdsCache</argument>
     136                        </request>
     137                        <request>
     138                            <identifier>active:cutGoldenThread</identifier>
     139                            <argument name="id">schemaMetadataCache</argument>
     140                        </request>
     141                        <request>
     142                            <identifier>active:cutGoldenThread</identifier>
     143                            <argument name="id">pagedSchemasList</argument>
     144                        </request>
     145                        <sloot-debug>
     146                            <log>
     147                                <level>INFO</level>
     148                                <message>
     149                                    <literal type="string">[access.data] [%1] modified users authorized to access schema with ID: [%2].&#xA;[&#xA;%3&#xA;]</literal>
     150                                </message>
     151                                <param>
     152                                    <request>
     153                                        <identifier>active:xpath2</identifier>
     154                                        <argument name="operand">scratch:user</argument>
     155                                        <argument name="operator">
     156                                            <literal type="string">string(/sc:user/@xml:id)</literal>
     157                                        </argument>
     158                                    </request>
     159                                </param>
     160                                <param>arg:schemaID</param>
     161                                <param>
     162                                    <request>
     163                                        <identifier>response-string</identifier>
     164                                        <verb>TRANSREPT</verb>
     165                                        <representation>java.lang.String</representation>
     166                                        <argument name="primary">this:response</argument>
     167                                    </request>
     168                                </param>
     169                            </log>
     170                            <request>
     171                                <verb>SINK</verb>
     172                                <identifier>res:/debug/org.isocat.schemacat.access.data.schema.authorizedIDs.sink.response.xml</identifier>
     173                                <argument name="primary">this:response</argument>
     174                            </request>
     175                        </sloot-debug>
     176                    </sequence>
     177                </then>
     178                <else>
     179                    <throw>
     180                        <id>
     181                            <literal type="string">NK_INPUT_ARGS_NOT_COMPLETE</literal>
     182                        </id>
     183                        <message>
     184                            <literal type="string">org.isocat.schemacat.access.data.schema.authorizedIDs.sink: 'authorizedUsers' not supplied!</literal>
     185                        </message>
     186                    </throw>
     187                </else>
     188            </if>
     189        </then>
     190    </switch>
     191    <request>
     192        <identifier>active:attachGoldenThread</identifier>
     193        <argument name="id">schemaAuthorizedIdsCache</argument>
    22194    </request>
    23     <sloot-debug>
    24         <log>
    25             <level>INFO</level>
    26             <message>
    27                 <literal type="string">[access.data] [%1] requested users authorized to access schema with ID: [%2].&#xA;[&#xA;%3]</literal>
    28             </message>
    29             <param>
    30                 <request>
    31                     <identifier>active:xpath2</identifier>
    32                     <argument name="operand">scratch:user</argument>
    33                     <argument name="operator">
    34                         <literal type="string">string(/sc:user/@xml:id)</literal>
    35                     </argument>
    36                 </request>
    37             </param>
    38             <param>arg:schemaID</param>
    39             <param>
    40                 <request>
    41                     <identifier>response-string</identifier>
    42                     <verb>TRANSREPT</verb>
    43                     <representation>java.lang.String</representation>
    44                     <argument name="primary">this:response</argument>
    45                 </request>
    46             </param>
    47         </log>
    48         <request>
    49             <verb>SINK</verb>
    50             <identifier>res:/debug/org.isocat.schemacat.access.data.schema.authorizedIDs.response.xml</identifier>
    51             <argument name="primary">this:response</argument>
    52         </request>
    53     </sloot-debug>
    54195</sequence>
    55196
  • cats/SCHEMAcat/trunk/urn.org.isocat.schemacat.access.data/access/schemaMetadata.dpml

    r4206 r4366  
    118118        </then>
    119119    </switch>
     120    <request>
     121        <identifier>active:attachGoldenThread</identifier>
     122        <argument name="id">schemaMetadataCache</argument>
     123    </request>
    120124    <sloot-debug>
    121125        <log>
  • cats/SCHEMAcat/trunk/urn.org.isocat.schemacat.access.data/access/user.dpml

    r4101 r4366  
    9191                                                                        return
    9292                                                                                if (empty($old-user)) then
    93                                                                                         (db:output(element sc:response {attribute success {'true'}}), insert node $new-user into /sc:users)
     93                                                                                        (db:output(element sc:response {attribute success {'true'}, element sc:written-data {$new-user}}), insert node $new-user into /sc:users)
    9494                                                                                else
    9595                                                                                        (error(xs:QName('sc:uniqueUser'),'There exists already an user with this id or principal!'))
     
    112112                                        <level>INFO</level>
    113113                                        <message>
    114                                                 <literal type="string">[access.data] Created user: [%1], for principal: [%2]</literal>
     114                                                <literal type="string">[access.data] Created user account with id: [%1] and principal: [%2]&#10;New user data:&#10;[&#10;%3:&#10;]</literal>
    115115                                        </message>
    116116                                        <param>this:new-user-id</param>
    117117                                        <param>arg:principal</param>
     118                                        <param>
     119                                                <request>
     120                                                        <identifier>response-string</identifier>
     121                                                        <verb>TRANSREPT</verb>
     122                                                        <representation>java.lang.String</representation>
     123                                                        <argument name="primary">this:response</argument>
     124                                                </request>
     125                                        </param>
    118126                                </log>
    119127                        </sequence>
     
    166174                                                                                        (error(xs:QName('sc:nonExistingUser'),'User matching specified id or principal not found!'))
    167175                                                                                else
    168                                                                                         (db:output(element sc:response {attribute success {'true'}}), replace node /sc:users/sc:user[(@xml:id eq $args/id) or (sc:principal eq $args/principal)] with $newUser)
     176                                                                                        (db:output(element sc:response {attribute success {'true'}, element sc:written-data {$newUser}}), replace node /sc:users/sc:user[(@xml:id eq $args/id) or (sc:principal eq $args/principal)] with $newUser)
    169177                                                                </query>
    170178                                                </literal>
     
    208216                                        <level>INFO</level>
    209217                                        <message>
    210                                                 <literal type="string">[access.data] Updated user account for %1: [%2]</literal>
     218                                                <literal type="string">[access.data] Updated user account with %1: [%2]&#10;Updated data:&#10;[&#10;%3&#10;]</literal>
    211219                                        </message>
    212220                                        <param>this:user-identifier-field</param>
    213221                                        <param>this:user-identifier-value</param>
     222                                        <param>
     223                                                <request>
     224                                                        <identifier>response-string</identifier>
     225                                                        <verb>TRANSREPT</verb>
     226                                                        <representation>java.lang.String</representation>
     227                                                        <argument name="primary">this:response</argument>
     228                                                </request>
     229                                        </param>
    214230                                </log>
    215231                        </sequence>
     
    296312                                                        <level>INFO</level>
    297313                                                        <message>
    298                                                                 <literal type="string">[access.data] [%1] requested user resource for id: [%2]</literal>
     314                                                                <literal type="string">[access.data] [%1] requested user resource with id: [%2]</literal>
    299315                                                        </message>
    300316                                                        <param>this:requester-user-id</param>
     
    307323                                                                <level>INFO</level>
    308324                                                                <message>
    309                                                                         <literal type="string">[access.data] [%1] requested user resource for principal: [%2]</literal>
     325                                                                        <literal type="string">[access.data] [%1] requested user resource with principal: [%2]</literal>
    310326                                                                </message>
    311327                                                                <param>this:requester-user-id</param>
     
    340356                                </id>
    341357                                <message>
    342                                         <literal type="string">org.isocat.schemacat.data.user: unsupported verb!</literal>
     358                                        <literal type="string">org.isocat.schemacat.access.data.user: unsupported verb!</literal>
    343359                                </message>
    344360                        </throw>
  • cats/SCHEMAcat/trunk/urn.org.isocat.schemacat.access.data/module.xml

    r4073 r4366  
    156156                  <active>
    157157                     <identifier>active:org.isocat.schemacat.access.data.schema.authorizedIDs</identifier>
    158                      <argument name="schemaID" min="1" max="1"/>                     
    159                   </active>
    160                </grammar>
     158                     <argument name="schemaID" min="1" max="1"/>
     159                     <argument name="authorizedUsers" min="0" max="1"/>
     160                  </active>
     161               </grammar>
     162               <verbs>SOURCE,SINK</verbs>
    161163               <request>
    162164                  <identifier>active:sloot.dpml</identifier>
    163165                  <argument name="operator">res:/access/schemaAuthorizedIDs.dpml</argument>
    164166                  <argument name="schemaID">arg:schemaID</argument>
     167                  <argument name="authorizedUsers">arg:authorizedUsers</argument>
    165168               </request>
    166169            </endpoint>
Note: See TracChangeset for help on using the changeset viewer.