48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| declare(strict_types=1);
 | |
| 
 | |
| namespace League\Flysystem\AwsS3V3;
 | |
| 
 | |
| use League\Flysystem\Visibility;
 | |
| 
 | |
| class PortableVisibilityConverter implements VisibilityConverter
 | |
| {
 | |
|     private const PUBLIC_GRANTEE_URI = 'http://acs.amazonaws.com/groups/global/AllUsers';
 | |
|     private const PUBLIC_GRANTS_PERMISSION = 'READ';
 | |
|     private const PUBLIC_ACL = 'public-read';
 | |
|     private const PRIVATE_ACL = 'private';
 | |
| 
 | |
|     public function __construct(private string $defaultForDirectories = Visibility::PUBLIC)
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     public function visibilityToAcl(string $visibility): string
 | |
|     {
 | |
|         if ($visibility === Visibility::PUBLIC) {
 | |
|             return self::PUBLIC_ACL;
 | |
|         }
 | |
| 
 | |
|         return self::PRIVATE_ACL;
 | |
|     }
 | |
| 
 | |
|     public function aclToVisibility(array $grants): string
 | |
|     {
 | |
|         foreach ($grants as $grant) {
 | |
|             $granteeUri = $grant['Grantee']['URI'] ?? null;
 | |
|             $permission = $grant['Permission'] ?? null;
 | |
| 
 | |
|             if ($granteeUri === self::PUBLIC_GRANTEE_URI && $permission === self::PUBLIC_GRANTS_PERMISSION) {
 | |
|                 return Visibility::PUBLIC;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return Visibility::PRIVATE;
 | |
|     }
 | |
| 
 | |
|     public function defaultForDirectories(): string
 | |
|     {
 | |
|         return $this->defaultForDirectories;
 | |
|     }
 | |
| }
 | 
