Content Permissions API: Fixed param combination bug
Fixes issue where providing owner_id alongside certain fallback_permissions would cause the owner change not to take affect, due to bad variable shadowing. For #4323
This commit is contained in:
		
							parent
							
								
									f5396ecaf0
								
							
						
					
					
						commit
						41c3ed154b
					
				| 
						 | 
					@ -55,9 +55,9 @@ class PermissionsUpdater
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (isset($data['fallback_permissions']['inheriting']) && $data['fallback_permissions']['inheriting'] !== true) {
 | 
					        if (isset($data['fallback_permissions']['inheriting']) && $data['fallback_permissions']['inheriting'] !== true) {
 | 
				
			||||||
            $data = $data['fallback_permissions'];
 | 
					            $fallbackData = $data['fallback_permissions'];
 | 
				
			||||||
            $data['role_id'] = 0;
 | 
					            $fallbackData['role_id'] = 0;
 | 
				
			||||||
            $rolePermissionData = $this->formatPermissionsFromApiRequestToEntityPermissions([$data], true);
 | 
					            $rolePermissionData = $this->formatPermissionsFromApiRequestToEntityPermissions([$fallbackData], true);
 | 
				
			||||||
            $entity->permissions()->createMany($rolePermissionData);
 | 
					            $entity->permissions()->createMany($rolePermissionData);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -259,4 +259,36 @@ class ContentPermissionsApiTest extends TestCase
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        ]);
 | 
					        ]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function test_update_can_both_provide_owner_and_fallback_permissions()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = $this->users->viewer();
 | 
				
			||||||
 | 
					        $page = $this->entities->page();
 | 
				
			||||||
 | 
					        $page->owned_by = null;
 | 
				
			||||||
 | 
					        $page->save();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->actingAsApiAdmin();
 | 
				
			||||||
 | 
					        $resp = $this->putJson($this->baseEndpoint . "/page/{$page->id}", [
 | 
				
			||||||
 | 
					            "owner_id" => $user->id,
 | 
				
			||||||
 | 
					            'fallback_permissions' => [
 | 
				
			||||||
 | 
					                'inheriting' => false,
 | 
				
			||||||
 | 
					                'view' => false,
 | 
				
			||||||
 | 
					                'create' => false,
 | 
				
			||||||
 | 
					                'update' => false,
 | 
				
			||||||
 | 
					                'delete' => false,
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					        ]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $resp->assertOk();
 | 
				
			||||||
 | 
					        $this->assertDatabaseHas('pages', ['id' => $page->id, 'owned_by' => $user->id]);
 | 
				
			||||||
 | 
					        $this->assertDatabaseHas('entity_permissions', [
 | 
				
			||||||
 | 
					            'entity_id' => $page->id,
 | 
				
			||||||
 | 
					            'entity_type' => 'page',
 | 
				
			||||||
 | 
					            'role_id' => 0,
 | 
				
			||||||
 | 
					            'view' => false,
 | 
				
			||||||
 | 
					            'create' => false,
 | 
				
			||||||
 | 
					            'update' => false,
 | 
				
			||||||
 | 
					            'delete' => false,
 | 
				
			||||||
 | 
					        ]);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue