<div dir="ltr">Hi, Adrian<div style>It seems not correct.</div><div style><br></div><div style>1st,</div><div style><img src="cid:ii_13cf8b4118660c8c" alt="Inline image 1" width="799" height="301"><br></div><div style><br>
</div><div style>2nd, </div><pre style="margin-top:0px;margin-bottom:0px;padding:0px;border:0px"><div class="" id="LC237" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
<br class="">    <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">def</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,0,0);font-weight:bold">authorize</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">self</span><span class="" style="margin:0px;padding:0px;border:0px">,</span> <span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px">):</span></div>
<div class="" id="LC238" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">"""</span></div><div class="" id="LC239" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
<span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">        Returns None if the request is authorized to continue or a standard</span></div><div class="" id="LC240" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
<span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">        WSGI response callable if not.</span></div><div class="" id="LC241" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
<span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">        """</span></div><div class="" id="LC242" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
<br></div><div class="" id="LC243" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">try</span><span class="" style="margin:0px;padding:0px;border:0px">:</span></div><div class="" id="LC244" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px">version</span><span class="" style="margin:0px;padding:0px;border:0px">,</span> <span class="" style="margin:0px;padding:0px;border:0px">account</span><span class="" style="margin:0px;padding:0px;border:0px">,</span> <span class="" style="margin:0px;padding:0px;border:0px">container</span><span class="" style="margin:0px;padding:0px;border:0px">,</span> <span class="" style="margin:0px;padding:0px;border:0px">obj</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">=</span> <span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">split_path</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,153,153)">1</span><span class="" style="margin:0px;padding:0px;border:0px">,</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,153,153)">4</span><span class="" style="margin:0px;padding:0px;border:0px">,</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">True</span><span class="" style="margin:0px;padding:0px;border:0px">)</span></div>
<div class="" id="LC245" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">except</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,0,0);font-weight:bold">ValueError</span><span class="" style="margin:0px;padding:0px;border:0px">:</span></div>
<div class="" id="LC246" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">self</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">logger</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">increment</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'errors'</span><span class="" style="margin:0px;padding:0px;border:0px">)</span></div>
<div class="" id="LC247" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">return</span> <span class="" style="margin:0px;padding:0px;border:0px">HTTPNotFound</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px">request</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">=</span><span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px">)</span></div>
<div class="" id="LC248" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">if</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">not</span> <span class="" style="margin:0px;padding:0px;border:0px">account</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">or</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">not</span> <span class="" style="margin:0px;padding:0px;border:0px">account</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">startswith</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">self</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">reseller_prefix</span><span class="" style="margin:0px;padding:0px;border:0px">):</span></div>
<div class="" id="LC249" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">return</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">self</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">denied_response</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px">)</span></div>
<div class="" id="LC250" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px">user_groups</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">=</span> <span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">remote_user</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">or</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">''</span><span class="" style="margin:0px;padding:0px;border:0px">)</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">split</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">','</span><span class="" style="margin:0px;padding:0px;border:0px">)</span></div>
<div class="" id="LC251" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">if</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'.reseller_admin'</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">in</span> <span class="" style="margin:0px;padding:0px;border:0px">user_groups</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">and</span> \</div>
<div class="" id="LC252" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
                <span class="" style="margin:0px;padding:0px;border:0px">account</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">!=</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">self</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">reseller_prefix</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">and</span> \</div>
<div class="" id="LC253" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
                <span class="" style="margin:0px;padding:0px;border:0px">account</span><span class="" style="margin:0px;padding:0px;border:0px">[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,134,179)">len</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">self</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">reseller_prefix</span><span class="" style="margin:0px;padding:0px;border:0px">)]</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">!=</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'.'</span><span class="" style="margin:0px;padding:0px;border:0px">:</span></div>
<div class="" id="LC254" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">environ</span><span class="" style="margin:0px;padding:0px;border:0px">[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'swift_owner'</span><span class="" style="margin:0px;padding:0px;border:0px">]</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">=</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">True</span></div>
<div class="" id="LC255" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">return</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">None</span></div><div class="" id="LC256" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">if</span> <span class="" style="margin:0px;padding:0px;border:0px">account</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">in</span> <span class="" style="margin:0px;padding:0px;border:0px">user_groups</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">and</span> \</div>
<div class="" id="LC257" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
                <span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">method</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">not</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">in</span> <span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'DELETE'</span><span class="" style="margin:0px;padding:0px;border:0px">,</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'PUT'</span><span class="" style="margin:0px;padding:0px;border:0px">)</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">or</span> <span class="" style="margin:0px;padding:0px;border:0px">container</span><span class="" style="margin:0px;padding:0px;border:0px">):</span></div>
<div class="" id="LC258" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,136);font-style:italic"># If the user is admin for the account and is not trying to do an</span></div><div class="" id="LC259" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,136);font-style:italic"># account DELETE or PUT...</span></div><div class="" id="LC260" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">environ</span><span class="" style="margin:0px;padding:0px;border:0px">[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'swift_owner'</span><span class="" style="margin:0px;padding:0px;border:0px">]</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">=</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">True</span></div>
<div class="" id="LC261" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">return</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">None</span></div><div class="" id="LC262" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">if</span> <span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">environ</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">get</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'swift_sync_key'</span><span class="" style="margin:0px;padding:0px;border:0px">)</span></div>
<div class="" id="LC263" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
                <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">and</span> <span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">environ</span><span class="" style="margin:0px;padding:0px;border:0px">[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'swift_sync_key'</span><span class="" style="margin:0px;padding:0px;border:0px">]</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">==</span></div>
<div class="" id="LC264" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
                     <span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">headers</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">get</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'x-container-sync-key'</span><span class="" style="margin:0px;padding:0px;border:0px">,</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">None</span><span class="" style="margin:0px;padding:0px;border:0px">))</span></div>
<div class="" id="LC265" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
                <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">and</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'x-timestamp'</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">in</span> <span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">headers</span><span class="" style="margin:0px;padding:0px;border:0px">):</span></div>
<div class="" id="LC266" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">return</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">None</span></div><div class="" id="LC267" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">if</span> <span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">method</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">==</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'OPTIONS'</span><span class="" style="margin:0px;padding:0px;border:0px">:</span></div>
<div class="" id="LC268" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,136);font-style:italic">#allow OPTIONS requests to proceed as normal</span></div><div class="" id="LC269" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">return</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">None</span></div><div class="" id="LC270" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px">referrers</span><span class="" style="margin:0px;padding:0px;border:0px">,</span> <span class="" style="margin:0px;padding:0px;border:0px">groups</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">=</span> <span class="" style="margin:0px;padding:0px;border:0px">parse_acl</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,134,179)">getattr</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px">,</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'acl'</span><span class="" style="margin:0px;padding:0px;border:0px">,</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">None</span><span class="" style="margin:0px;padding:0px;border:0px">))</span></div>
<div class="" id="LC271" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">if</span> <span class="" style="margin:0px;padding:0px;border:0px">referrer_allowed</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">referer</span><span class="" style="margin:0px;padding:0px;border:0px">,</span> <span class="" style="margin:0px;padding:0px;border:0px">referrers</span><span class="" style="margin:0px;padding:0px;border:0px">):</span></div>
<div class="" id="LC272" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">if</span> <span class="" style="margin:0px;padding:0px;border:0px">obj</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">or</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'.rlistings'</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">in</span> <span class="" style="margin:0px;padding:0px;border:0px">groups</span><span class="" style="margin:0px;padding:0px;border:0px">:</span></div>
<div class="" id="LC273" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
                <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">return</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">None</span></div><div class="" id="LC274" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">return</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">self</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">denied_response</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px">)</span></div>
<div class="" id="LC275" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">if</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">not</span> <span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">remote_user</span><span class="" style="margin:0px;padding:0px;border:0px">:</span></div>
<div class="" id="LC276" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">return</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">self</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">denied_response</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px">)</span></div>
<div class="" id="LC277" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">for</span> <span class="" style="margin:0px;padding:0px;border:0px">user_group</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">in</span> <span class="" style="margin:0px;padding:0px;border:0px">user_groups</span><span class="" style="margin:0px;padding:0px;border:0px">:</span></div>
<div class="" id="LC278" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
            <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">if</span> <span class="" style="margin:0px;padding:0px;border:0px">user_group</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">in</span> <span class="" style="margin:0px;padding:0px;border:0px">groups</span><span class="" style="margin:0px;padding:0px;border:0px">:</span></div>
<div class="" id="LC279" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
                <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">return</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">None</span></div><div class="" id="LC280" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
        <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">return</span> <span class="" style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153)">self</span><span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold">.</span><span class="" style="margin:0px;padding:0px;border:0px">denied_response</span><span class="" style="margin:0px;padding:0px;border:0px">(</span><span class="" style="margin:0px;padding:0px;border:0px">req</span><span class="" style="margin:0px;padding:0px;border:0px">)</span></div>
<div class="" id="LC280" style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px;margin:0px;padding:0px 0px 0px 10px;border:0px">
<span class="" style="margin:0px;padding:0px;border:0px"><br></span></div><div class="" id="LC280" style="margin:0px;padding:0px 0px 0px 10px;border:0px"><font color="#333333" face="Consolas, Liberation Mono, Courier, monospace"><span style="line-height:17.77777862548828px">Target codes is here. No "</span></font>X-Container-Read<span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px">" header has ever been checked.</span></div>
<div class="" id="LC280" style="margin:0px;padding:0px 0px 0px 10px;border:0px"><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px"><br>
</span></div><div class="" id="LC280" style="margin:0px;padding:0px 0px 0px 10px;border:0px"><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12.222222328186035px;line-height:17.77777862548828px">3rd, in </span><a href="http://docs.openstack.org/folsom/openstack-object-storage/admin/content/authentication-and-access-permissions.html" style="font-family:arial">http://docs.openstack.org/folsom/openstack-object-storage/admin/content/authentication-and-access-permissions.html</a>,</div>
<div class="" id="LC280" style="margin:0px;padding:0px 0px 0px 10px;border:0px"><br></div><div class="" id="LC280" style="margin:0px;padding:0px 0px 0px 10px;border:0px"><span style="color:rgb(0,0,0);font-family:Verdana,Geneva,sans-serif;font-size:13.63636302947998px;white-space:normal">"""Generally speaking, </span><span style="font-family:Verdana,Geneva,sans-serif;font-size:13.63636302947998px;white-space:normal"><font color="#ff0000">each user has their own storage account and has full access to that account</font></span><span style="color:rgb(0,0,0);font-family:Verdana,Geneva,sans-serif;font-size:13.63636302947998px;white-space:normal">. Users must authenticate with their credentials as described above, but once authenticated they can create/delete containers and objects within that account. </span><span style="font-family:Verdana,Geneva,sans-serif;font-size:13.63636302947998px;white-space:normal"><font color="#ff0000">The only way a user can access the content from another account is if they share an API access key</font></span><span style="color:rgb(0,0,0);font-family:Verdana,Geneva,sans-serif;font-size:13.63636302947998px;white-space:normal"> or a session token provided by your authentication system."""</span><br>
</div><div class="" id="LC280" style="margin:0px;padding:0px 0px 0px 10px;border:0px"><span style="color:rgb(0,0,0);font-family:Verdana,Geneva,sans-serif;font-size:13.63636302947998px;white-space:normal"><br></span></div>
<div class="" id="LC280" style="margin:0px;padding:0px 0px 0px 10px;border:0px"><font color="#000000" face="Verdana, Geneva, sans-serif"><span style="font-size:14px;white-space:normal">Does this paragraph tell us tester3(user) has access control for test(account), but not other accounts?</span></font></div>
</pre></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Feb 20, 2013 at 8:16 PM, Adrian Smith <span dir="ltr"><<a href="mailto:adrian@17od.com" target="_blank">adrian@17od.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im HOEnZb">Unless tester3 is given explicit permissions he can't do anything.<br>
<br>
To be of any use the 'test' user (who is an admin) would need to grant<br>
'test3' read/write access to a container. Permissions are granted<br>
using the X-Container-Read and X-Container-Write headers on<br>
containers, <a href="http://docs.openstack.org/folsom/openstack-object-storage/admin/content/authentication-and-access-permissions.html" target="_blank">http://docs.openstack.org/folsom/openstack-object-storage/admin/content/authentication-and-access-permissions.html</a>.<br>

<br>
Adrian<br>
<br>
On 20 February 2013 05:34, Kun Huang <<a href="mailto:Academicgareth@gmail.com">Academicgareth@gmail.com</a>> wrote:<br>
</div><div class="HOEnZb"><div class="h5">> In tempauth of SAIO, what's the meaning of<br>
><br>
> user_test_tester3 = testing3<br>
><br>
> not account is test<br>
> tester3 is a user of that account, but tester3 is not admin or reseller<br>
> admin.<br>
> Could testers get(GET,HEAD) information from account:test?<br>
><br>
> In the current code, the answer is no.<br>
><br>
> I'm not sure what can tester3 do in this case?<br>
><br>
</div></div><div class="HOEnZb"><div class="h5">> _______________________________________________<br>
> Mailing list: <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
> Post to     : <a href="mailto:openstack@lists.launchpad.net">openstack@lists.launchpad.net</a><br>
> Unsubscribe : <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
> More help   : <a href="https://help.launchpad.net/ListHelp" target="_blank">https://help.launchpad.net/ListHelp</a><br>
><br>
</div></div></blockquote></div><br></div>