Commit graph

56 commits

Author SHA1 Message Date
Benjamin Renard
7f862c9765 Clean errors detected by PHPstan (level 0) and configure CI to run it on each commit 2022-12-31 02:02:28 +01:00
Benjamin Renard
6770babe14 LSldapObject::getValue(): ensure return is array in case of attribute 2021-10-08 14:32:56 +02:00
Benjamin Renard
9907e08f18 Code cleaning 2021-08-25 18:02:37 +02:00
Benjamin Renard
3c7ec2890a API / Show an object: make API return all accessible attribute
The method now return all accessible attributes and not only thow who 
are configured to be displayed in view
2021-06-30 18:11:26 +02:00
Benjamin Renard
40fdc92451 Code cleaning: fix tabs 2021-06-10 18:45:00 +02:00
Benjamin Renard
4b634e408d LSldapObject: fix triggering after_modify event on create 2021-05-21 11:29:57 +02:00
Benjamin Renard
2b6b8ce270 Fix project URLs and list emails addresses 2021-04-13 18:04:19 +02:00
Benjamin Renard
a25b1e8c10 LSldapObject: clean updata/validate form data code to fix handling just check mode 2021-02-04 11:49:35 +01:00
Benjamin Renard
0ec390e1fe Add API feature
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.
2021-02-03 14:40:28 +01:00
Benjamin Renard
e92bc10c8b LSldapObject: fix default $attrValues handling for updateObjectsInRelation/deleteOneObjectInRelation methods 2021-02-03 14:19:37 +01:00
Benjamin Renard
29e499e1d6 LSldapObject::submitChange(): fix error renaming LSobject
Old RDN value was keep and block the update ot the other changed 
attributes.
2021-01-28 16:59:42 +01:00
Benjamin Renard
fadfe2d2ba LSldapObject::validateAttrData(): fix fatal errors on missing formated log messages 2021-01-28 16:57:51 +01:00
Benjamin Renard
957777d44f LSldapObject::validateAttrData(): fix checking LDAP validation result 2021-01-18 15:03:26 +01:00
Benjamin Renard
7ef6e57c49 LSldapObject::submitChange(): code cleaning 2020-12-22 19:46:57 +01:00
Benjamin Renard
a353ca5c37 LSldapObject::submitChange(): Add security check about isNew() return 2020-12-22 19:45:35 +01:00
Benjamin Renard
06b8fddc51 LSldapObject::validateAttrData(): check return type of LSldap::getNumberResult() 2020-12-22 19:44:51 +01:00
Benjamin Renard
514a2eb0fd Code cleaning 2020-12-22 18:42:56 +01:00
Benjamin Renard
f6f2e352bc CLI show: add JSON output (with -j|--json parameters)
Futhermore, -p|--pretty parameter also permit to prettify the JSON 
output.
2020-12-22 10:31:23 +01:00
Benjamin Renard
d39bba45fb CLI show: fix handling --raw-values parameter 2020-12-22 10:27:22 +01:00
Benjamin Renard
0f0bff5a77 LSldapObject::submitChange(): on new object, check if generated DN is not already affected 2020-12-14 19:42:19 +01:00
Benjamin Renard
a49cf4ba0c LSldapObject: fix/improve validateAttrData() 2020-12-14 19:36:21 +01:00
Benjamin Renard
bc462c07b6 Add some debugging/trace messages 2020-12-01 16:48:07 +01:00
Benjamin Renard
3c75ef482e Remove historic read right on all attributes of the hard-coded "admin" LSprofile 2020-12-01 16:40:21 +01:00
Benjamin Renard
0addf22c2e LSldapObject :: _updateData(): make method protected instead of private
This change allow this method usage from children classes to allow 
custom relation implementations.
2020-12-01 15:04:20 +01:00
Benjamin Renard
106a2d9f04 Use ensureIsArray() helper to make code more readable 2020-11-30 19:43:52 +01:00
Benjamin Renard
5315005382 LSldapObject::loadData(): explicitly list need attributes in LDAP request 2020-09-21 12:45:39 +02:00
Benjamin Renard
be04b6becf Add warning on unknown key requested using __get methods 2020-09-10 10:38:35 +02:00
Benjamin Renard
cccce6edb5 LSldapObject::submitChange(): improve logging 2020-09-09 18:36:46 +02:00
Benjamin Renard
df1c46eab6 Add __toString() method to all common extendable PHP classes
This permit to make context logging easier.
2020-09-08 17:29:10 +02:00
Benjamin Renard
88d8d7f026 LSrelation: fix error codes prefix 2020-09-03 18:38:08 +02:00
Benjamin Renard
406b017023 Add method LSldapObject::isValidTypeName() and use it in LSsession::loadLSobject() 2020-09-03 15:40:59 +02:00
Benjamin Renard
4c427b26d6 Improve logging on LSobject & LSattribute triggers executions 2020-08-26 18:08:14 +02:00
Benjamin Renard
4c1c7b2fae LSldapObject->getValue(): add $first and $default parameters 2020-08-26 12:56:58 +02:00
Benjamin Renard
a8e2ecc343 Translate LSerror message at formating/diplaying time
It's permit to be sure to translate message in the right user language, 
even if its context isn't loaded at error emission time.
2020-08-25 17:31:50 +02:00
Benjamin Renard
69fc42a299 LScli create command: add autocompletion 2020-07-07 14:28:04 +02:00
Benjamin Renard
05e0cd56b4 LSldapObject: replace LSlog :: debug() usage by self :: log_debug() 2020-07-07 14:16:13 +02:00
Benjamin Renard
f0bb4f585c LScli modify command: add autocompletion
Autocompletion feature also add on LSform and LSformElement for 
attribute values
2020-07-07 12:43:55 +02:00
Benjamin Renard
312b3dfb11 Wording 2020-07-07 12:38:28 +02:00
Benjamin Renard
a21b40d706 LScli autocompleter: fix handling quoted arguments 2020-07-06 17:53:54 +02:00
Benjamin Renard
f277528400 LScli relation command: improve -r/--remove autocompletion 2020-07-06 10:22:27 +02:00
1eced8f47a Add autocompleter for CLI command relation 2020-06-23 15:59:29 +02:00
9de22502ef Add autocompleter for CLI command remove 2020-06-15 11:32:24 +02:00
4ba584e8c6 Add autocompleter for CLI command show 2020-06-15 11:26:57 +02:00
Benjamin Renard
e8095636b5 Allow multiple type of objects in LSselect & LSattr_html :: select_object and globally rework and improve LSrelation consequently 2020-05-19 17:55:55 +02:00
Benjamin Renard
76577c058b Fix some PHP warnings 2020-05-18 20:10:18 +02:00
Benjamin Renard
e1cce4e696 LSldapObject :: getLabel(): fix method to be really static 2020-05-18 20:08:03 +02:00
Benjamin Renard
510f3d4bdc LSldapObject: specify object type filter on loading data 2020-05-14 11:07:18 +02:00
Benjamin Renard
f7c4050b70 LSldapObject: fix getObjectFilter method 2020-05-14 11:06:09 +02:00
85786bc33c LScli : add create command 2020-05-09 12:05:52 +02:00
0feb8e16ea LSldapObject :: validateAttrsData: fix typo 2020-05-09 11:37:09 +02:00