source: cats/SCHEMAcat/trunk/urn.org.isocat.schemacat.interface.rest/interface/pagedUserSchemas.dpml @ 4578

Last change on this file since 4578 was 4578, checked in by andmor, 10 years ago

Paged user schemas now returns all the schemas if the requesting user has a role available on the <sc:access-roles><sc:schemas>...</sc:schemas></sc:access-roles> list

File size: 5.0 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<sequence debug="true">
3    <log>
4        <level>INFO</level>
5        <message>
6            <literal type="string">[interface.REST] [%1] requested paged schemas list for user id: [%2]</literal>
7        </message>
8        <param>
9            <request>
10                <identifier>active:xpath2</identifier>
11                <argument name="operand">scratch:user</argument>
12                <argument name="operator">
13                    <literal type="string">string(/sc:user/@xml:id)</literal>
14                </argument>
15            </request>
16        </param>
17        <param>arg:userID</param>
18    </log>
19    <request assignment="schemaAuthorizedRoles">
20        <identifier>active:org.isocat.schemacat.access.data.schemas.authorizedRoles</identifier>
21    </request>
22    <if assignment="response">
23        <cond>
24            <request>
25                <identifier>active:isAuthorized</identifier>
26                <argument name="authorizedIDs" method="identity">
27                    <request>
28                        <identifier>active:sloot.xquery</identifier>
29                        <argument name="operator">
30                            <literal type="xml">
31                                <query>
32                                    <ids>
33                                        <id>{$userID}</id>
34                                    </ids>
35                                </query>
36                            </literal>
37                        </argument>
38                        <argument name="userID">arg:userID</argument>
39                    </request>
40                </argument>
41                <argument name="authorizedRoles" method="identity">this:schemaAuthorizedRoles</argument>
42                <argument name="user" method="identity">scratch:user</argument>
43            </request>
44        </cond>
45        <then>
46            <if>
47                <!-- if user has schemas administration rights, source all the schemas -->
48                <cond>         
49                    <request>
50                        <identifier>active:sloot.xpath2</identifier>
51                        <argument name="operand">
52                            <request>
53                                <identifier>active:xslt2</identifier>
54                                <argument name="operand">scratch:user</argument>
55                                <argument name="operator">
56                                    <literal type="xml">
57                                        <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sc="http://www.isocat.org/ns/schemacat" version="2.0">
58                                            <xsl:param name="authorizedRoles"/>
59                                            <xsl:param name="debug"/>
60                                            <xsl:template match="/">
61                                                <b><xsl:value-of select="string(/sc:user/sc:role = $authorizedRoles/roles/role)"/></b>
62                                            </xsl:template>
63                                        </xsl:stylesheet>
64                                    </literal>
65                                </argument>
66                                <argument name="authorizedRoles" method="identity">this:schemaAuthorizedRoles</argument>
67                                <argument name="debug">this:sloot-debug</argument>
68                            </request>
69                        </argument>
70                        <argument name="operator">
71                            <literal type="string">boolean(normalize-space(.)=('t','true'))</literal>
72                        </argument>
73                    </request>
74                </cond>
75                <then>
76                    <request>
77                        <identifier>active:org.isocat.schemacat.access.data.schemas.paged</identifier>
78                        <argument name="userID">
79                            <literal type="string">*</literal>
80                        </argument>
81                        <argument name="startPage">arg:startPage</argument>
82                        <argument name="pageSize">arg:pageSize</argument>
83                    </request>
84                </then>
85                <else>
86                    <request>
87                        <identifier>active:org.isocat.schemacat.access.data.schemas.paged</identifier>
88                        <argument name="userID">arg:userID</argument>
89                        <argument name="startPage">arg:startPage</argument>
90                        <argument name="pageSize">arg:pageSize</argument>
91                    </request>
92                </else>
93            </if>
94        </then>
95        <else>
96            <request>
97                <identifier>active:interface.rest.HTTPresponse.forbidden</identifier>
98            </request>
99        </else>
100    </if>
101    <sloot-debug>
102        <request>
103            <verb>SINK</verb>
104            <identifier>res:/debug/org.isocat.schemacat.interface.rest.schemas.user.paged.response.xml</identifier>
105            <argument name="primary">this:response</argument>
106        </request>
107    </sloot-debug>
108</sequence>
Note: See TracBrowser for help on using the repository browser.