mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-27 00:33:48 -05:00
* layerFilterExpression Return an additional filter, used in WMS/GetMap, WMS/GetFeatureInfo, WFS/GetFeature to filter the features * layerFilterSubsetString Return an additional the subset string (typically SQL) filter. Faster than the layerFilterExpression but not supported on all the type of layer * layerPermissions Change the rights on the layer per user (known by the plugin) Concern rights: publish, insert, update, delete. Mostly used in WFS/Transaction, and the publish in all requests. * authorizedLayerAttributes Be able to show some attributes only for a subset of user Used in: WMS/GetFeatureInfo, WFS/GetFeature * allowToEdit Be able to don't allow to edit a particular feature, in our case base on the Geometry Used in: WFS/Transaction * cacheKey Cache key to used to create the capabilities cache, "" for no cache, shouldn't contains any "-", default to ""
78 lines
3.2 KiB
Plaintext
78 lines
3.2 KiB
Plaintext
/***************************************************************************
|
|
qgsaccesscontrolfilter.sip
|
|
--------------------------
|
|
Access control interface for Qgis Server plugins
|
|
|
|
begin : 2015-05-19
|
|
copyright : (C) 2015 by Stéphane Brunner
|
|
email : stephane dot brunner at camptocamp dot org
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
/**
|
|
* \class QgsAccessControlFilter
|
|
* \brief Class defining access control interface for QGIS Server.
|
|
*
|
|
* Security can define any (or none) of the following method:
|
|
* * layerFilterExpression()
|
|
* * layerFilterSubsetString()
|
|
* * layerPermissions()
|
|
* * authorizedLayerAttributes()
|
|
* * allowToEdit()
|
|
* * cacheKey()
|
|
*/
|
|
|
|
class QgsAccessControlFilter
|
|
{
|
|
%TypeHeaderCode
|
|
#include "qgsaccesscontrolfilter.h"
|
|
#include "qgsserverinterface.h"
|
|
#include "qgsfeature.h"
|
|
#include "qgsmaplayer.h"
|
|
%End
|
|
|
|
public:
|
|
/** Constructor
|
|
* QgsServerInterface passed to plugins constructors
|
|
* and must be passed to QgsAccessControlPlugin instances.
|
|
*/
|
|
QgsAccessControlFilter( const QgsServerInterface* serverInterface );
|
|
/** Destructor */
|
|
virtual ~QgsAccessControlFilter();
|
|
|
|
/** Describe the layer permission */
|
|
struct LayerPermissions
|
|
{
|
|
bool canRead;
|
|
bool canUpdate;
|
|
bool canInsert;
|
|
bool canDelete;
|
|
};
|
|
|
|
/** Return the QgsServerInterface instance*/
|
|
const QgsServerInterface* serverInterface() const;
|
|
/** Return an additional expression filter */
|
|
virtual const QString layerFilterExpression( const QgsVectorLayer* layer /Transfer/ ) const;
|
|
/** Return an additional the subset string (typically SQL) filter.
|
|
Faster than the layerFilterExpression but not supported on all the type of layer */
|
|
virtual const QString layerFilterSubsetString( const QgsVectorLayer* layer /Transfer/ ) const;
|
|
/** Return the layer permissions */
|
|
virtual const LayerPermissions layerPermissions( const QgsMapLayer* layer /Transfer/ ) const;
|
|
/** Return the authorized layer attributes */
|
|
virtual const QStringList* authorizedLayerAttributes( const QgsVectorLayer* layer /Transfer/, const QStringList& attributes ) const;
|
|
/** Are we authorize to modify the following geometry */
|
|
virtual bool allowToEdit( const QgsVectorLayer* layer /Transfer/, const QgsFeature& feature /Transfer/ ) const;
|
|
/** Cache key to used to create the capabilities cache, "" for no cache, shouldn't any contains "-", default to "" */
|
|
virtual const QString cacheKey() const;
|
|
};
|
|
|
|
typedef QMultiMap<int, QgsAccessControlFilter*> QgsAccessControlFilterMap;
|