Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117771564
D5214.1775238392.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
7 KB
Referenced Files
None
Subscribers
None
D5214.1775238392.diff
View Options
diff --git a/src/app/Backends/DAV.php b/src/app/Backends/DAV.php
--- a/src/app/Backends/DAV.php
+++ b/src/app/Backends/DAV.php
@@ -30,12 +30,43 @@
protected $responseHeaders = [];
protected $homes;
+
+ /**
+ * Get object instance for user/password/location
+ *
+ * @param string $user Username
+ * @param string $password Password
+ * @param ?string $url Server location (defaults to services.dav.uri option value)
+ *
+ * @return DAV DAV client instance
+ */
+ public static function getInstance($user, $password, $url = null): DAV
+ {
+ $dav = new self();
+ $dav->setCredentials($user, $password);
+ $dav->setUrl($url ?: \config('services.dav.uri'));
+
+ return $dav;
+ }
+
+ /**
+ * Set DAV server location
+ *
+ * @param string $url Server location (URL)
+ */
+ public function setUrl($url): void
+ {
+ $this->url = $url;
+ }
+
/**
- * Object constructor
+ * Set user name and password
+ *
+ * @param string $user Username
+ * @param string $password Password
*/
- public function __construct($user, $password, $url = null)
+ public function setCredentials($user, $password): void
{
- $this->url = $url ?: \config('services.dav.uri');
$this->user = $user;
$this->password = $password;
}
@@ -378,7 +409,7 @@
throw new \Exception("Failed to create an authentication token for DAV");
}
- $dav = new self($user->email, $password);
+ $dav = self::getInstance($user->email, $password);
foreach ($folders as $props) {
$folder = new DAV\Folder();
diff --git a/src/app/Console/Commands/Status/Health.php b/src/app/Console/Commands/Status/Health.php
--- a/src/app/Console/Commands/Status/Health.php
+++ b/src/app/Console/Commands/Status/Health.php
@@ -5,8 +5,8 @@
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redis;
-use App\Backends\DAV;
use App\Providers\Payment\Mollie;
+use App\Support\Facades\DAV;
use App\Support\Facades\IMAP;
use App\Support\Facades\LDAP;
use App\Support\Facades\OpenExchangeRates;
diff --git a/src/app/DataMigrator/Driver/DAV.php b/src/app/DataMigrator/Driver/DAV.php
--- a/src/app/DataMigrator/Driver/DAV.php
+++ b/src/app/DataMigrator/Driver/DAV.php
@@ -44,7 +44,7 @@
$username = $account->username . ($account->loginas ? "**{$account->loginas}" : '');
$baseUri = preg_replace('|^dav|', 'http', $account->uri);
- $this->client = new DAVClient($username, $account->password, $baseUri);
+ $this->client = DAVClient::getInstance($username, $account->password, $baseUri);
$this->engine = $engine;
$this->account = $account;
}
diff --git a/src/app/Jobs/User/CreateJob.php b/src/app/Jobs/User/CreateJob.php
--- a/src/app/Jobs/User/CreateJob.php
+++ b/src/app/Jobs/User/CreateJob.php
@@ -3,6 +3,7 @@
namespace App\Jobs\User;
use App\Jobs\UserJob;
+use App\Support\Facades\DAV;
use App\Support\Facades\IMAP;
use App\Support\Facades\LDAP;
@@ -113,7 +114,7 @@
}
// FIXME: Should we ignore exceptions on this operation or introduce DAV_READY status?
- \App\Backends\DAV::initDefaultFolders($user);
+ DAV::initDefaultFolders($user);
// Make user active in non-mandate mode only
if (
diff --git a/src/app/Policy/Mailfilter/Modules/ItipModule.php b/src/app/Policy/Mailfilter/Modules/ItipModule.php
--- a/src/app/Policy/Mailfilter/Modules/ItipModule.php
+++ b/src/app/Policy/Mailfilter/Modules/ItipModule.php
@@ -3,6 +3,7 @@
namespace App\Policy\Mailfilter\Modules;
use App\Backends\DAV;
+use App\Support\Facades\DAV as DAVFacade;
use App\User;
use App\Policy\Mailfilter\MailParser;
use App\Policy\Mailfilter\Result;
@@ -160,7 +161,7 @@
$password = \App\Auth\Utils::tokenCreate((string) $user->id, $this->davTTL);
$this->davTokenExpiresOn = now()->addSeconds($this->davTTL - 1);
- $this->davClient = new DAV($user->email, $password);
+ $this->davClient = DAVFacade::getInstance($user->email, $password);
}
return $this->davClient;
diff --git a/src/app/Providers/AppServiceProvider.php b/src/app/Providers/AppServiceProvider.php
--- a/src/app/Providers/AppServiceProvider.php
+++ b/src/app/Providers/AppServiceProvider.php
@@ -25,6 +25,9 @@
$this->app->bind('ldap', function () {
return new \App\Backends\LDAP();
});
+ $this->app->bind('dav', function () {
+ return new \App\Backends\DAV();
+ });
$this->app->bind('roundcube', function () {
return new \App\Backends\Roundcube();
});
diff --git a/src/app/Support/Facades/DAV.php b/src/app/Support/Facades/DAV.php
new file mode 100644
--- /dev/null
+++ b/src/app/Support/Facades/DAV.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Support\Facades;
+
+use Illuminate\Support\Facades\Facade;
+
+class DAV extends Facade
+{
+ /**
+ * Get the registered name of the component.
+ */
+ protected static function getFacadeAccessor(): string
+ {
+ return 'dav';
+ }
+}
diff --git a/src/tests/BackendsTrait.php b/src/tests/BackendsTrait.php
--- a/src/tests/BackendsTrait.php
+++ b/src/tests/BackendsTrait.php
@@ -213,7 +213,7 @@
if (empty($this->clients[$clientId])) {
$uri = preg_replace('/^dav/', 'http', $account->uri);
- $this->clients[$clientId] = new DAV($account->username, $account->password, $uri);
+ $this->clients[$clientId] = DAV::getInstance($account->username, $account->password, $uri);
}
return $this->clients[$clientId];
diff --git a/src/tests/Feature/Backends/DAVTest.php b/src/tests/Feature/Backends/DAVTest.php
--- a/src/tests/Feature/Backends/DAVTest.php
+++ b/src/tests/Feature/Backends/DAVTest.php
@@ -75,7 +75,7 @@
\config(['services.dav.default_folders' => $dav_folders]);
DAV::initDefaultFolders($user);
- $dav = new DAV($user->email, $props['password']);
+ $dav = DAV::getInstance($user->email, $props['password']);
$folders = $dav->listFolders(DAV::TYPE_VCARD);
$this->assertCount(1, $folders);
diff --git a/src/tests/Feature/Console/Status/HealthTest.php b/src/tests/Feature/Console/Status/HealthTest.php
--- a/src/tests/Feature/Console/Status/HealthTest.php
+++ b/src/tests/Feature/Console/Status/HealthTest.php
@@ -3,6 +3,7 @@
namespace Tests\Feature\Console\Status;
use Tests\TestCase;
+use App\Support\Facades\DAV;
use App\Support\Facades\IMAP;
use App\Support\Facades\LDAP;
use App\Support\Facades\Roundcube;
@@ -21,6 +22,7 @@
\config(['app.with_ldap' => true]);
\config(['app.with_imap' => true]);
+ DAV::shouldReceive('healthcheck')->once()->andReturn(true);
IMAP::shouldReceive('healthcheck')->once()->andReturn(true);
LDAP::shouldReceive('healthcheck')->once()->andReturn(true);
Roundcube::shouldReceive('healthcheck')->once()->andReturn(true);
diff --git a/src/tests/Feature/Jobs/User/CreateTest.php b/src/tests/Feature/Jobs/User/CreateTest.php
--- a/src/tests/Feature/Jobs/User/CreateTest.php
+++ b/src/tests/Feature/Jobs/User/CreateTest.php
@@ -2,6 +2,7 @@
namespace Tests\Feature\Jobs\User;
+use App\Support\Facades\DAV;
use App\Support\Facades\IMAP;
use App\Support\Facades\LDAP;
use App\User;
@@ -48,6 +49,7 @@
$this->assertFalse($user->isActive());
// Test successful creation
+ DAV::shouldReceive('initDefaultFolders')->once()->with($user);
IMAP::shouldReceive('createUser')->once()->with($user)->andReturn(true);
LDAP::shouldReceive('createUser')->once()->with($user)->andReturn(true);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 3, 5:46 PM (1 h, 44 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18825268
Default Alt Text
D5214.1775238392.diff (7 KB)
Attached To
Mode
D5214: DAV Facade
Attached
Detach File
Event Timeline