Page MenuHomePhorge

D2530.1775167300.diff
No OneTemporary

Authored By
Unknown
Size
4 KB
Referenced Files
None
Subscribers
None

D2530.1775167300.diff

diff --git a/src/app/Domain.php b/src/app/Domain.php
--- a/src/app/Domain.php
+++ b/src/app/Domain.php
@@ -110,13 +110,13 @@
}
/**
- * Return list of public+active domain names
+ * Return list of public+active domain names (for current tenant)
*/
public static function getPublicDomains(): array
{
- $where = sprintf('(type & %s)', Domain::TYPE_PUBLIC);
-
- return self::whereRaw($where)->get(['namespace'])->pluck('namespace')->toArray();
+ return self::withEnvTenant()
+ ->whereRaw(sprintf('(type & %s)', Domain::TYPE_PUBLIC))
+ ->get(['namespace'])->pluck('namespace')->toArray();
}
/**
diff --git a/src/app/Http/Controllers/API/V4/DomainsController.php b/src/app/Http/Controllers/API/V4/DomainsController.php
--- a/src/app/Http/Controllers/API/V4/DomainsController.php
+++ b/src/app/Http/Controllers/API/V4/DomainsController.php
@@ -152,7 +152,7 @@
*/
public function status($id)
{
- $domain = Domain::find($id);
+ $domain = Domain::withEnvTenant()->findOrFail($id);
// Only owner (or admin) has access to the domain
if (!Auth::guard()->user()->canRead($domain)) {
diff --git a/src/app/User.php b/src/app/User.php
--- a/src/app/User.php
+++ b/src/app/User.php
@@ -301,12 +301,19 @@
/**
* List the domains to which this user is entitled.
+ * Note: Active public domains are also returned (for the user tenant).
*
- * @return Domain[]
+ * @return Domain[] List of Domain objects
*/
- public function domains()
+ public function domains(): array
{
- $domains = Domain::whereRaw(sprintf('(type & %s)', Domain::TYPE_PUBLIC))
+ if ($this->tenant_id) {
+ $domains = Domain::where('tenant_id', $this->tenant_id);
+ } else {
+ $domains = Domain::withEnvTenant();
+ }
+
+ $domains = $domains->whereRaw(sprintf('(type & %s)', Domain::TYPE_PUBLIC))
->whereRaw(sprintf('(status & %s)', Domain::STATUS_ACTIVE))
->get()
->all();
diff --git a/src/tests/Feature/DomainTest.php b/src/tests/Feature/DomainTest.php
--- a/src/tests/Feature/DomainTest.php
+++ b/src/tests/Feature/DomainTest.php
@@ -123,12 +123,18 @@
$public_domains = Domain::getPublicDomains();
$this->assertNotContains('public-active.com', $public_domains);
- $domain = Domain::where('namespace', 'public-active.com')->first();
$domain->type = Domain::TYPE_PUBLIC;
$domain->save();
$public_domains = Domain::getPublicDomains();
$this->assertContains('public-active.com', $public_domains);
+
+ // Domains of other tenants should not be returned
+ $domain->tenant_id = 2;
+ $domain->save();
+
+ $public_domains = Domain::getPublicDomains();
+ $this->assertNotContains('public-active.com', $public_domains);
}
/**
diff --git a/src/tests/Feature/UserTest.php b/src/tests/Feature/UserTest.php
--- a/src/tests/Feature/UserTest.php
+++ b/src/tests/Feature/UserTest.php
@@ -297,26 +297,32 @@
public function testDomains(): void
{
$user = $this->getTestUser('john@kolab.org');
- $domains = [];
+ $domain = $this->getTestDomain('useraccount.com', [
+ 'status' => Domain::STATUS_NEW | Domain::STATUS_ACTIVE,
+ 'type' => Domain::TYPE_PUBLIC,
+ ]);
- foreach ($user->domains() as $domain) {
- $domains[] = $domain->namespace;
- }
+ $domains = collect($user->domains())->pluck('namespace')->all();
- $this->assertContains(\config('app.domain'), $domains);
+ $this->assertContains($domain->namespace, $domains);
$this->assertContains('kolab.org', $domains);
// Jack is not the wallet controller, so for him the list should not
// include John's domains, kolab.org specifically
$user = $this->getTestUser('jack@kolab.org');
- $domains = [];
- foreach ($user->domains() as $domain) {
- $domains[] = $domain->namespace;
- }
+ $domains = collect($user->domains())->pluck('namespace')->all();
- $this->assertContains(\config('app.domain'), $domains);
+ $this->assertContains($domain->namespace, $domains);
$this->assertNotContains('kolab.org', $domains);
+
+ // Public domains of other tenants should not be returned
+ $domain->tenant_id = 2;
+ $domain->save();
+
+ $domains = collect($user->domains())->pluck('namespace')->all();
+
+ $this->assertNotContains($domain->namespace, $domains);
}
public function testUserQuota(): void

File Metadata

Mime Type
text/plain
Expires
Thu, Apr 2, 10:01 PM (6 h, 46 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18821119
Default Alt Text
D2530.1775167300.diff (4 KB)

Event Timeline