From 6e0c3998310535ecb2453649a87307c85a904d9f Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Mon, 11 Nov 2024 19:24:46 +0100 Subject: [PATCH] add API Endpoint to query permissions in frontend --- .../api/frontend/v1/Permission.php | 50 +++++++++++++++++++ public/js/api/fhcapifactory.js | 4 +- public/js/api/permission.js | 17 +++++++ 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 application/controllers/api/frontend/v1/Permission.php create mode 100644 public/js/api/permission.js diff --git a/application/controllers/api/frontend/v1/Permission.php b/application/controllers/api/frontend/v1/Permission.php new file mode 100644 index 000000000..3bd17538d --- /dev/null +++ b/application/controllers/api/frontend/v1/Permission.php @@ -0,0 +1,50 @@ +. + */ + +if (! defined('BASEPATH')) exit('No direct script access allowed'); + +class Permission extends FHCAPI_Controller +{ + public function __construct() + { + parent::__construct([ + 'isBerechtigt' => self::PERM_LOGGED + ]); + + // Load the library SearchBarLib + $this->load->library('PermissionLib'); + } + + public function isBerechtigt() + { + $payload = json_decode($this->input->raw_input_stream, TRUE); + if( !isset($payload['berechtigung_kurzbz']) || empty($payload['berechtigung_kurzbz']) ) + { + $this->terminateWithError('Missing Parameter "berechtigung_kurzbz"'); + } + $berechtigung_kurzbz = $payload['berechtigung_kurzbz']; + $art = isset($payload['art']) ? $payload['art'] : null; + $oe_kurzbz = isset($payload['oe_kurzbz']) ? $payload['oe_kurzbz'] : null; + $kostenstelle_id = isset($payload['kostenstelle_id']) ? $payload['kostenstelle_id'] : null; + $payload['isBerechtigt'] = $this->permissionlib->isBerechtigt( + $berechtigung_kurzbz, $art, $oe_kurzbz, $kostenstelle_id + ); + + $this->terminateWithSuccess($payload); + } +} \ No newline at end of file diff --git a/public/js/api/fhcapifactory.js b/public/js/api/fhcapifactory.js index e30772ca7..abf6dac17 100644 --- a/public/js/api/fhcapifactory.js +++ b/public/js/api/fhcapifactory.js @@ -24,6 +24,7 @@ import stv from "./stv.js"; import notiz from "./notiz.js"; import betriebsmittel from "./betriebsmittel.js"; import checkperson from "./checkperson.js"; +import permission from "./permission.js"; export default { search, @@ -34,5 +35,6 @@ export default { stv, notiz, betriebsmittel, - checkperson + checkperson, + permission }; \ No newline at end of file diff --git a/public/js/api/permission.js b/public/js/api/permission.js new file mode 100644 index 000000000..d6aab4e73 --- /dev/null +++ b/public/js/api/permission.js @@ -0,0 +1,17 @@ +export default { + isBerechtigt: function(berechtigung_kurzbz, art, oe_kurzbz, kostenstelle_id) { + var url = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + + '/api/frontend/v1/Permission/isBerechtigt'; + var payload = { + "berechtigung_kurzbz": berechtigung_kurzbz, + "art": art, + "oe_kurzbz": oe_kurzbz, + "kostenstelle_id": kostenstelle_id + }; + return axios.post(url, payload, { + headers: { + 'Content-Type': 'application/json' + } + }); + } +} \ No newline at end of file