Commit graph

62 commits

Author SHA1 Message Date
Benjamin Renard 29bfca1792
LSform / dataEntryForm: Add forceGeneration parameter 2023-02-10 11:59:55 +01:00
Benjamin Renard d7ba794839 Rollback class properties typing to restore PHP < 7.4 support 2023-01-03 12:51:45 +01:00
Benjamin Renard 20432adb14 Clean errors detected by PHPstan (level 3) 2023-01-02 01:17:46 +01:00
Benjamin Renard bbde10bbf0 Add some class properties type & coments and clean errors detected by PHPstan (level 2) 2023-01-01 19:38:03 +01:00
Benjamin Renard 8a02680114 Clean/normalize comments format about parameters & returned value of functions/methods 2022-12-31 05:52:31 +01:00
Benjamin Renard e71823b644 Clean errors detected by PHPstan (level 1) 2022-12-31 04:09:56 +01:00
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
Benjamin Renard 1eced8f47a Add autocompleter for CLI command relation 2020-06-23 15:59:29 +02:00
Benjamin Renard 9de22502ef Add autocompleter for CLI command remove 2020-06-15 11:32:24 +02:00
Benjamin Renard 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