$this->addField('protocol', SelectFromArray::class, __('Protocole'), ['options' => $this->getProtocols(), 'default' => 'SFTP', 'column' => true, 'allows_null' => false]);
$this->addField('ftp_mode', SelectFromArray::class, __('Mode FTP'), ['when' => ['protocol' => $this->getFTPProtocols()], 'options' => ['1' => __('Actif'), '0' => __('Passif')], 'default' => '1']);
$this->addField('host', Text::class, __('Hôte'), ['default' => '', 'column' => true, 'column_label' => __('Serveur'), 'column_function_name' => 'getServerColumn', 'column_type' => 'model_function', 'when' => ['protocol' => $this->getHostProtocols()]]);
+ $this->addField('project_id', Text::class, __('Identifiant du projet'), ['default' => '', 'when' => ['protocol' => ['GCS']]]);
$this->addField('port', Integer::class, __('Port'), ['hint' => __('Laisser vide pour utiliser le port par défaut'), 'default' => '', 'min' => 1, 'max' => 65536, 'when' => ['protocol' => $this->getPortProtocols()]]);
$this->addField('username', Text::class, __('Nom d\'utilisateur'), ['when' => ['protocol' => $this->getUsernameProtocols()]]);
$this->addField('password', Password::class, __('Mot de passe'), ['when' => ['protocol' => $this->getPasswordProtocols()]]);
$this->addField('region', Text::class, __('Région'), ['default' => 'eu-west-3', 'when' => ['s3_provider' => 'AWS', 'protocol' => $this->getS3Protocols()]]);
$this->addField('endpoint', URL::class, __('Endpoint'), ['when' => ['s3_provider' => 'Minio', 'protocol' => $this->getS3Protocols()]]);
$this->addField('access_key', Text::class, __('Clé d\'accès'), ['when' => ['protocol' => $this->getS3Protocols()]]);
+ $this->addField('api_key', Text::class, __('Clé d\'API'), ['when' => ['protocol' => ['GCS']]]);
$this->addField('secret', Password::class, __('Secret'), ['when' => ['protocol' => $this->getS3Protocols()]]);
- $this->addField('bucket', Text::class, __('Bucket'), ['when' => ['protocol' => $this->getS3Protocols()]]);
+ $this->addField('bucket', Text::class, __('Bucket'), ['when' => ['protocol' => $this->getCloudStorageProtocols()]]);
$this->addField('base_path', Text::class, __('Chemin de base'), ['default' => '/']);
$this->addField('base_url', Text::class, __('URL de base'), ['default' => 'https://', 'column' => true, 'column_type' => 'model_function', 'column_function_name' => 'getBaseURL']);
}
return ['S3'];
}
+ protected function getCloudStorageProtocols()
+ {
+ return ['GCS', 'S3'];
+ }
+
protected function getProtocols()
{
return ['SFTP' => 'SFTP', 'FTP' => __('FTP non sécurisé'), 'FTPS' => __('FTP sécurisé explicite sur TLS'), 'FTPES' => __('FTP sécurisé implicite sur TLS'), 'S3' => __('Amazon S3') . '(' . __('Et solutions compatibles') . ')', 'GCS' => 'Google Cloud Storage'];
return new SFTP($this);
} else if ($this->getProtocol() === 'S3') {
return new S3($this);
- }else if($this->getProtocol() === 'GCS'){
+ } else if ($this->getProtocol() === 'GCS') {
return new GCS($this);
}
return null;