Commit a8552d870c70643f4d541c82b4033c77f9b49551
1 parent
b1a71138
Updated to facilitable table changes to folders_users_roles_link
git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@696 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
14 additions
and
14 deletions
lib/security/permission.inc
| @@ -28,7 +28,8 @@ class Permission { | @@ -28,7 +28,8 @@ class Permission { | ||
| 28 | */ | 28 | */ |
| 29 | function userHasDocumentWritePermission($iDocumentID) { | 29 | function userHasDocumentWritePermission($iDocumentID) { |
| 30 | $oDocument = & Document::get($iDocumentID); | 30 | $oDocument = & Document::get($iDocumentID); |
| 31 | - if (Permission::userHasFolderWritePermission($oDocument->getFolderID())) { | 31 | + if (Permission::userHasFolderWritePermission($oDocument->getFolderID()) || |
| 32 | + Permission::userHasWriteRoleForDocument($iDocumentID)) { | ||
| 32 | return true; | 33 | return true; |
| 33 | } | 34 | } |
| 34 | $_SESSION["errorMessage"] = $lang_err_user_doc_write . "id " . $iDocumentID; | 35 | $_SESSION["errorMessage"] = $lang_err_user_doc_write . "id " . $iDocumentID; |
| @@ -49,6 +50,7 @@ class Permission { | @@ -49,6 +50,7 @@ class Permission { | ||
| 49 | function userHasDocumentReadPermission($iDocumentID) { | 50 | function userHasDocumentReadPermission($iDocumentID) { |
| 50 | $oDocument = & Document::get($iDocumentID); | 51 | $oDocument = & Document::get($iDocumentID); |
| 51 | if (Permission::userHasDocumentWritePermission($iDocumentID) || | 52 | if (Permission::userHasDocumentWritePermission($iDocumentID) || |
| 53 | + Permission::userHasReadRoleForDocument($iDocumentID) || | ||
| 52 | Permission::userHasFolderReadPermission($oDocument->getFolderID())) { | 54 | Permission::userHasFolderReadPermission($oDocument->getFolderID())) { |
| 53 | return true; | 55 | return true; |
| 54 | } | 56 | } |
| @@ -70,8 +72,7 @@ class Permission { | @@ -70,8 +72,7 @@ class Permission { | ||
| 70 | */ | 72 | */ |
| 71 | function userHasFolderWritePermission($iFolderID) { | 73 | function userHasFolderWritePermission($iFolderID) { |
| 72 | global $lang_err_user_folder_write; | 74 | global $lang_err_user_folder_write; |
| 73 | - if (Permission::userHasGroupWritePermissionForFolder($iFolderID) || | ||
| 74 | - Permission::userHasWriteRoleForFolder($iFolderID) || | 75 | + if (Permission::userHasGroupWritePermissionForFolder($iFolderID) || |
| 75 | Permission::userIsSystemAdministrator() || | 76 | Permission::userIsSystemAdministrator() || |
| 76 | Permission::userIsUnitAdministratorForFolder($iFolderID)) { | 77 | Permission::userIsUnitAdministratorForFolder($iFolderID)) { |
| 77 | return true; | 78 | return true; |
| @@ -96,8 +97,7 @@ class Permission { | @@ -96,8 +97,7 @@ class Permission { | ||
| 96 | global $lang_err_user_folder_write; | 97 | global $lang_err_user_folder_write; |
| 97 | if (Permission::folderIsPublic($iFolderID) || | 98 | if (Permission::folderIsPublic($iFolderID) || |
| 98 | Permission::userHasFolderWritePermission($iFolderID) || | 99 | Permission::userHasFolderWritePermission($iFolderID) || |
| 99 | - Permission::userHasGroupReadPermissionForFolder($iFolderID) || | ||
| 100 | - Permission::userHasReadRoleForFolder($iFolderID)) { | 100 | + Permission::userHasGroupReadPermissionForFolder($iFolderID)) { |
| 101 | return true; | 101 | return true; |
| 102 | } | 102 | } |
| 103 | $_SESSION["errorMessage"] = $lang_err_user_folder_write . "id " . $iFolderID; | 103 | $_SESSION["errorMessage"] = $lang_err_user_folder_write . "id " . $iFolderID; |
| @@ -234,13 +234,13 @@ class Permission { | @@ -234,13 +234,13 @@ class Permission { | ||
| 234 | * | 234 | * |
| 235 | * @return boolean true is the user has the role assigned, false otherwise and set $_SESSION["errorMessage"] | 235 | * @return boolean true is the user has the role assigned, false otherwise and set $_SESSION["errorMessage"] |
| 236 | */ | 236 | */ |
| 237 | - function userHasWriteRoleForFolder($iFolderID) { | 237 | + function userHasWriteRoleForDocument($iDocumentID) { |
| 238 | global $default, $lang_err_user_role; | 238 | global $default, $lang_err_user_role; |
| 239 | $sql = $default->db; | 239 | $sql = $default->db; |
| 240 | $sql->query("SELECT * FROM $default->owl_folders_user_roles_table AS FURL INNER JOIN $default->owl_groups_folders_approval_table AS GFAL ON FURL.group_folder_approval_id = GFAL.id " . | 240 | $sql->query("SELECT * FROM $default->owl_folders_user_roles_table AS FURL INNER JOIN $default->owl_groups_folders_approval_table AS GFAL ON FURL.group_folder_approval_id = GFAL.id " . |
| 241 | - "INNER JOIN $default->owl_roles_table AS R ON GFAL.role_id = R.id " . | ||
| 242 | - "WHERE GFAL.folder_id = " . $iFolderID . " " . | ||
| 243 | - "AND user_id = " . $_SESSION["userID"] . " " . | 241 | + "INNER JOIN $default->owl_roles_table AS R ON GFAL.role_id = R.id " . |
| 242 | + "WHERE user_id = " . $_SESSION["userID"] . " " . | ||
| 243 | + "AND FURL.document_id = $iDocumentID " . | ||
| 244 | "AND R.can_write = 1"); | 244 | "AND R.can_write = 1"); |
| 245 | if ($sql->next_record()) { | 245 | if ($sql->next_record()) { |
| 246 | return true; | 246 | return true; |
| @@ -256,13 +256,13 @@ class Permission { | @@ -256,13 +256,13 @@ class Permission { | ||
| 256 | * | 256 | * |
| 257 | * @return boolean true is the user has the role assigned, false otherwise and set $_SESSION["errorMessage"] | 257 | * @return boolean true is the user has the role assigned, false otherwise and set $_SESSION["errorMessage"] |
| 258 | */ | 258 | */ |
| 259 | - function userHasReadRoleForFolder($iFolderID) { | 259 | + function userHasReadRoleForDocument($iDocumentID) { |
| 260 | global $default, $lang_err_user_role; | 260 | global $default, $lang_err_user_role; |
| 261 | $sql = $default->db; | 261 | $sql = $default->db; |
| 262 | - $sql->query("SELECT * " . | ||
| 263 | - "FROM " . $default->owl_folders_user_roles_table . " AS FURL INNER JOIN " . $default->owl_roles_table . " AS R ON FURL.role_type_id = R.id " . | ||
| 264 | - "WHERE folder_id = " . $iFolderID . " " . | ||
| 265 | - "AND user_id = " . $_SESSION["userID"] . " " . | 262 | + $sql->query("SELECT * FROM $default->owl_folders_user_roles_table AS FURL INNER JOIN $default->owl_groups_folders_approval_table AS GFAL ON FURL.group_folder_approval_id = GFAL.id " . |
| 263 | + "INNER JOIN $default->owl_roles_table AS R ON GFAL.role_id = R.id " . | ||
| 264 | + "WHERE user_id = " . $_SESSION["userID"] . " " . | ||
| 265 | + "AND FURL.document_id = $iDocumentID " . | ||
| 266 | "AND R.can_read = 1"); | 266 | "AND R.can_read = 1"); |
| 267 | if ($sql->next_record()) { | 267 | if ($sql->next_record()) { |
| 268 | return true; | 268 | return true; |