Crear discos on-demand en Laravel

Crear discos on-demand en Laravel
Photo by Vincent Botta / Unsplash

Recientemente me vi en la necesidad de conectarme usando SFTP a diferentes servidores, dependiendo del usuario que está realizando una acción determinada. Tras una búsqueda en la documentación de Laravel, vi que (¡cómo no!) era posible hacerlo de forma muy simple gracias a la facade Storage.

Para hacerlo, simplemente tenemos que llamar al método Storage::build() con el driver que queremos utilizar (de nuestro fichero config/filesystems.php) y los parámetros de conexión que necesitemos:

public function disk(): \Illuminate\Contracts\Filesystem\Filesystem
{
    $credentials = $this->credentials();

    return Storage::build([
        'driver' => 'sftp',
        'host' => $credentials['host'],
        'username' => $credentials['username'],
        'password' => $credentials['password'],
        'port' => intval($credentials['port']),
    ]);
}