From 44d60e5f5230680a0499604b6a21a96ef2152863 Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Fri, 12 Apr 2024 10:31:22 +0200 Subject: [PATCH] Validation Stg Permissions --- application/helpers/hlp_common_helper.php | 42 ++++++++++++++++++- .../language/english/form_validation_lang.php | 5 ++- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/application/helpers/hlp_common_helper.php b/application/helpers/hlp_common_helper.php index 688fae965..40aed007c 100644 --- a/application/helpers/hlp_common_helper.php +++ b/application/helpers/hlp_common_helper.php @@ -449,14 +449,52 @@ function is_valid_date($dateString) function has_write_permissions($value, $permissions = '') { if (!$permissions) - $permissions = $value; // TODO(chris): ?? + $permissions = $value; $permissions = explode(',', $permissions); $CI =& get_instance(); + $CI->load->library('AuthLib'); $CI->load->library('PermissionLib'); + return $CI->permissionlib->hasAtLeastOne( $permissions, 'sometable', - 'w' + PermissionLib::WRITE_RIGHT ); } + +/** + * check if has permissions for a studiengang_kz + */ +function has_permissions_for_stg($studiengang_kz, $permissions = '') +{ + if (!$permissions) + return false; + $permissions = explode(',', $permissions); + + $CI =& get_instance(); + $CI->load->library('AuthLib'); + $CI->load->library('PermissionLib'); + + foreach ($permissions as $perm) { + if (strpos($perm, PermissionLib::PERMISSION_SEPARATOR) === false) { + $CI->addError( + 'The given permission does not use the correct format', + FHCAPI_Controller::ERROR_TYPE_GENERAL + ); + return false; + } + + list($perm, $accesstype) = explode(PermissionLib::PERMISSION_SEPARATOR, $perm); + $at = ''; + if (strpos($accesstype, PermissionLib::READ_RIGHT) !== false) + $at = PermissionLib::SELECT_RIGHT; // S + if (strpos($accesstype, PermissionLib::WRITE_RIGHT) !== false) + $at .= PermissionLib::REPLACE_RIGHT.PermissionLib::DELETE_RIGHT; // UID + + if ($CI->permissionlib->isBerechtigt($perm, $at, $studiengang_kz)) + return true; + } + + return false; +} diff --git a/application/language/english/form_validation_lang.php b/application/language/english/form_validation_lang.php index 9e942f8e5..b8918a721 100644 --- a/application/language/english/form_validation_lang.php +++ b/application/language/english/form_validation_lang.php @@ -36,7 +36,8 @@ * @since Version 1.0.0 * @filesource */ -defined('BASEPATH') OR exit('No direct script access allowed'); +if (!defined('BASEPATH')) exit('No direct script access allowed'); $lang['form_validation_has_write_permissions'] = 'You have no rights to edit {field} field.'; -$lang['form_validation_is_valid_date'] = 'The date format is invalid or out of range.'; \ No newline at end of file +$lang['form_validation_is_valid_date'] = 'The date format is invalid or out of range.'; +$lang['form_validation_has_permissions_for_stg'] = 'You have no rights for stg {field}.';