Browse Source

Feature multi user share : ok

idleman 3 years ago
parent
commit
6a692ce92c
3 changed files with 13 additions and 12 deletions
  1. 9 1
      js/main.js
  2. 1 8
      plugin/hackpoint/action.php
  3. 3 3
      plugin/part/action.php

+ 9 - 1
js/main.js

@@ -2774,6 +2774,7 @@ function is_phone(){
 /** PERMISSION **/
 //Récuperation d'une liste de permission dans le tableau #permissions
 function core_permission_search(callback){
+	console.log('ee');
 	var data = {
 		action:'core_permission_search',
 	};
@@ -2781,6 +2782,9 @@ function core_permission_search(callback){
 	data.uid = modal.attr('data-uid');
 	data.entity = modal.attr('data-entity');
 
+
+	$('#permissions tbody tr:visible').remove();
+
 	$('#permissions').fill(data,function(response){
 		if(callback!=null) callback();
 	});
@@ -2814,8 +2818,12 @@ function core_permission_edit(data){
 
 	$('#permission-modal').modal('show');
 	
+	$('#permission-modal').unbind('shown.bs.modal').on('shown.bs.modal', function () {
+	 	core_permission_search();
+	});
 
-	core_permission_search();	
+
+	
 	if(data.uid){
 		$.action({
 			action : 'core_permission_edit',

+ 1 - 8
plugin/hackpoint/action.php

@@ -73,20 +73,16 @@ switch($_['action']){
 		});
 	break;
 
-
-
+	/* permissions */
 	case 'hackpoint_sketch_permission_save':
 		Action::write(function(&$response){
 			global $myUser,$_;
 			if(!$myUser->can('hackpoint','edit')) throw new Exception("Permissions insuffisantes",403);
 			require_once(__DIR__.SLASH.'Sketch.class.php');
-			
 			$permission = Permission::form();
 			$permission->entity = 'hackpoint';
-
 			$sketch = Sketch::getById($permission->uid);
 			if($sketch->creator!=$myUser->login) throw new Exception("Vous ne pouvez pas définir une permission sur un sketch qui ne vous appartient pas");
-			
 			$permission->save();
 
 		});
@@ -99,11 +95,8 @@ switch($_['action']){
 			require_once(__DIR__.SLASH.'Sketch.class.php');
 			$permission = Permission::getById($_['id']);
 			if($permission->entity != 'hackpoint') throw new Exception("Erreur de routage des permissions");
-			
 			$sketch = Sketch::getById($permission->uid);
 			if($sketch->creator!=$myUser->login) throw new Exception("Vous ne pouvez pas définir une permission sur un sketch qui ne vous appartient pas");
-			
-
 			Permission::deleteById($permission->id);
 		});
 	break;

+ 3 - 3
plugin/part/action.php

@@ -28,7 +28,7 @@ switch($_['action']){
 
 			$item = Resource::provide('resource',1);
 			$sketch = $item->join('sketch');
-			if(!$sketch->state && $sketch->creator != $myUser->login) throw new Exception("Permissions insuffisantes",403);
+			if(!$sketch->state && $sketch->creator != $myUser->login && !$myUser->can('hackpoint',$sketch->id,'read') ) throw new Exception("Permissions insuffisantes",403);
 			
 			foreach(ResourcePart::loadAll(array('resource'=>$_['resource']),  null, null, array('*'),1) as $resourcepart){
 				$part = $resourcepart->join('part');
@@ -54,7 +54,7 @@ switch($_['action']){
 			if(isset($_['resource'])){
 				$item = Resource::provide('resource',1);
 				$sketch = $item->join('sketch');
-				if($sketch->creator != $myUser->login) throw new Exception("Permissions insuffisantes",403);
+				if($sketch->creator != $myUser->login && !$myUser->can('hackpoint',$sketch->id,'edit') ) throw new Exception("Permissions insuffisantes",403);
 			}
 
 			$part = Part::provide('part');
@@ -97,7 +97,7 @@ switch($_['action']){
 			$resourcePart = ResourcePart::getById($_['id'],2);
 			$resource = $resourcePart->join('resource');
 			$sketch = $resource->join('sketch');
-			if($sketch->creator!=$myUser->login) throw new Exception("Permissions insuffisantes",403);
+			if($sketch->creator!=$myUser->login && !$myUser->can('hackpoint',$sketch->id,'delete')) throw new Exception("Permissions insuffisantes",403);
 			ResourcePart::deleteById($_['id']);
 			
 		});