Add LSaddon dyngroup with feature to handle update static cache members
attributes on users or dyngroup URI changes. The update process could
also be runned using CLI update_dyngroups_members_cache command
(allowing cron task configuration).
LSexample also evoluate to add example of dynamic groups implementation.
On this occasion, the restore_lsexample script was completely rewrited.
This parameter permit to control if the returned value contain or not
details. By default (no details), the value used the format as accept by
create/modify method. The details mode is more efficient to display the
value.
Some major changes have been made to handle this new feature :
- LSsession now have a flag about API mode. The displayTemplate() and
displayAjaxReturn() methods have been adjust to correctly handle this
mode.
- LSauth system have been adjust to handle a custom API mode :
- LSauthMethod can support or not this mode : the $api_mode_supported
permit to defined if supported (default, false). Currently, only
HTTP (default in API mode) and annonymous mode support it.
- An api_access parameter permit to configure witch type of user
LSobject types could use the API. This flag must be set to True to
allow a type of LSobject (default: False). In a same way, a
web_access parameter now permit to disable Web access for some
types of users (but this parameter is optional and its default value
is True).
- The HTTP method is the privileged first method for API mode. In this
mode, if auth data aren't present in environment, it will request it
by triggered a 403 HTTP error. Realm can be configured with new
LSAUTHMETHOD_HTTP_API_REALM constant.
- The LStemplate system handle API mode to correctly react on errors: it
return a JSON answer instead of HTML page. Error pages also now return
adjusted HTTP code (404 or 500).
- The LSurl system have been adjust to handle API mode :
- On declaring handlers, we could now specify if it's an API view with
new $api_mode paremeter of add_handler() method
- The LSurlRequest object have a new attribute to check if it's an API
request
- The error_404() method handle the API mode to return JSON answer.
Furthermore, if no handlers matched with the requested URL, API mode
is automatically enabled if the requested URL starts with 'api/'.
- LSform implement it own API mode flag and a new submited flag that
be toggle via the new setSubmited() method. Some major changes also
occured on LSformElement classes to specifically handle API
input/output for each types of attributes:
- a new getApiValue() method permit to retrieve the API value of the
attribute (on show API view)
- the getPostData() method now have to correctly handle API input for
the attribute (on create/modify API views). A programmatic way have
been adopted for each types of attributes.
- The LSimport and LScli create/modify commands also evolved to enable
API mode of the LSform. This permit to take advantage of the new
capability of LSform/LSformElement to handle input values with a
programmatic way.
- New routes have been add to handle API views. All this new routes
start with 'api/1.0/' and use the same URL schema as the web UI. The
API currently permit to search/show/add/modify/remove LSobjects and
manages their relations.
Add support of following attributes:
- supannCivilite:
add supannGetCivilitePossibleValues()
- eduPersonAffiliation:
add supannGetAffiliationPossibleValues() and
supannCheckEduPersonAffiliation()
- supannCheckEduPersonAffiliation:
add supannGetAffiliationPossibleValues() and
supannCheckEduPersonPrimaryAffiliation()
- supannCheckEduPersonPrimaryAffiliation:
add generate_eduPersonPrincipalName()