/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/server/qgsaccesscontrol.h                                        *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 ************************************************************************/







class QgsAccessControl : QgsFeatureFilterProvider
{
%Docstring(signature="appended")
A helper class that centralizes restrictions given by all the access
control filter plugins.
%End

%TypeHeaderCode
#include "qgsaccesscontrol.h"
#include "qgsaccesscontrolfilter.h"
%End
  public:
    QgsAccessControl();
%Docstring
Constructor
%End

    QgsAccessControl( const QgsAccessControl &copy );


    ~QgsAccessControl();


    void resolveFilterFeatures( const QList<QgsMapLayer *> &layers );
%Docstring
Resolve features' filter of layers The method fetch filter's expressions
returned from access control plugins and and combine them to a unique
expression for each layer. The resulted expressions are stored in cache
for efficiency; between each requests, the cache must be cleared using
':py:func:`~QgsAccessControl.unresolveFilterFeatures`'.

:param layers: to filter
%End

    void unresolveFilterFeatures();
%Docstring
Clear expression's cache computed from `resolveFilterFeatures`
%End

    virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;

%Docstring
Filter the features of the layer

:param layer: the layer to control
:param filterFeatures: the request to fill
%End

    virtual QgsFeatureFilterProvider *clone() const /Factory/;

%Docstring
Returns a clone of the object

:return: A clone
%End

    QString extraSubsetString( const QgsVectorLayer *layer ) const;
%Docstring
Returns an additional subset string (typically SQL) filter

:param layer: the layer to control

:return: the subset string to use
%End

    bool layerReadPermission( const QgsMapLayer *layer ) const;
%Docstring
Returns the layer read right

:param layer: the layer to control

:return: ``True`` if it can be read
%End

    bool layerInsertPermission( const QgsVectorLayer *layer ) const;
%Docstring
Returns the layer insert right

:param layer: the layer to control

:return: ``True`` if we can insert on it
%End

    bool layerUpdatePermission( const QgsVectorLayer *layer ) const;
%Docstring
Returns the layer update right

:param layer: the layer to control

:return: ``True`` if we can do an update
%End

    bool layerDeletePermission( const QgsVectorLayer *layer ) const;
%Docstring
Returns the layer delete right

:param layer: the layer to control

:return: ``True`` if we can do a delete
%End

    virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;

%Docstring
Returns the authorized layer attributes

:param layer: the layer to control
:param attributes: the list of attribute

:return: the list of visible attributes
%End

    bool allowToEdit( const QgsVectorLayer *layer, const QgsFeature &feature ) const;
%Docstring
Are we authorized to modify the following geometry

:param layer: the layer to control
:param feature: the concerned feature

:return: ``True`` if we are allowed to edit the feature
%End

    bool fillCacheKey( QStringList &cacheKey ) const;
%Docstring
Fill the capabilities caching key

:param cacheKey: the list to fill with a cache variant
%End

    void registerAccessControl( QgsAccessControlFilter *accessControl, int priority = 0 );
%Docstring
Register an access control filter

:param accessControl: the access control to add
:param priority: the priority used to define the order
%End

};

/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/server/qgsaccesscontrol.h                                        *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 ************************************************************************/
