<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">One other idea. I believe you can avoid using OGR by adding your filter to class expressions and setting a template (which enables queries) at the class level. Class expressions are always checked. If you have
 one class it’s easy:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal">LAYER<o:p></o:p></p>
<p class="MsoNormal">     NAME Traseer<o:p></o:p></p>
<p class="MsoNormal">     GROUP TelMe<o:p></o:p></p>
<p class="MsoNormal">     TYPE LINE<o:p></o:p></p>
<p class="MsoNormal">     <span lang="NO-BOK">DATA "TM_Nett/TM_Traces"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="NO-BOK">     CLASS<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="NO-BOK">        EXPRESSION'[type]' != "Bru")<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="NO-BOK">        # Styling and more etc....<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="NO-BOK">        TEMPLATE ’void’<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="NO-BOK">      END<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="NO-BOK">      # No template set at the layer level<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="NO-BOK">END</span><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Might consider WMS-only vs. WFS-only layer defs to simplify life if you have multiple classes.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Steve<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> mapserver-users-bounces@lists.osgeo.org [mailto:mapserver-users-bounces@lists.osgeo.org]
<b>On Behalf Of </b>Hawk AA<br>
<b>Sent:</b> Monday, November 05, 2012 8:26 AM<br>
<b>To:</b> mapserver-users@lists.osgeo.org<br>
<b>Subject:</b> [mapserver-users] MapServer Layer Filter not applying to WFS<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi there, mailing list,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We have a customer sending us data with sensitive information. The most convenient way for us is to receive the complete data set and applying a filter in the mapfile.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The layer definition looks like this:<o:p></o:p></p>
<p class="MsoNormal">LAYER<o:p></o:p></p>
<p class="MsoNormal">                               NAME Traseer<o:p></o:p></p>
<p class="MsoNormal">                               GROUP TelMe<o:p></o:p></p>
<p class="MsoNormal">                               TYPE LINE<o:p></o:p></p>
<p class="MsoNormal">                               <span lang="NO-BOK">DATA "TM_Nett/TM_Traces"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="NO-BOK">                               FILTER('[type]' != "Bru")<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="NO-BOK">                               #Styling and more etc....<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="NO-BOK">END<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="NO-BOK"><o:p> </o:p></span></p>
<p class="MsoNormal">This works flawlessly using PHP Mapscript and the mapserver WMS service. The data is not accessible. The problem occurs when querying by WFS. The Mapserver WFS service seems to omit the FILTER information and opens up for selecting items
 with the type “Bru”, which is a serious security flaw. <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’d consider this as a bug, although I’m not certain. If anyone please can confirm this, or show me how to make mapserver filter data in WFS as well, I’d be much obliged.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best Regards,<o:p></o:p></p>
<p class="MsoNormal">Håkon<o:p></o:p></p>
</div>
</body>
</html>