diff --git a/src/app/Http/Controllers/API/V4/UsersController.php b/src/app/Http/Controllers/API/V4/UsersController.php --- a/src/app/Http/Controllers/API/V4/UsersController.php +++ b/src/app/Http/Controllers/API/V4/UsersController.php @@ -165,7 +165,9 @@ // Check if the user is a controller of his wallet $isController = $user->canDelete($user); + $isDegraded = $user->isDegraded(); + $hasMeet = !$isDegraded && Sku::withObjectTenantContext($user)->where('title', 'room')->exists(); $hasCustomDomain = $user->wallet()->entitlements() ->where('entitleable_type', Domain::class) ->count() > 0; @@ -194,7 +196,7 @@ 'enableFolders' => $isController && $hasCustomDomain && $hasBeta, // TODO: Make 'enableResources' working for wallet controllers that aren't account owners 'enableResources' => $isController && $hasCustomDomain && $hasBeta, - 'enableRooms' => !$isDegraded, + 'enableRooms' => $hasMeet, 'enableSettings' => $isController, 'enableUsers' => $isController, 'enableWallets' => $isController, diff --git a/src/tests/Feature/Controller/UsersTest.php b/src/tests/Feature/Controller/UsersTest.php --- a/src/tests/Feature/Controller/UsersTest.php +++ b/src/tests/Feature/Controller/UsersTest.php @@ -557,6 +557,8 @@ $this->assertSame('user-imap-ready', $result['process'][2]['label']); $this->assertSame(false, $result['process'][2]['state']); $this->assertSame('running', $result['processState']); + $this->assertTrue($result['enableRooms']); + $this->assertFalse($result['enableBeta']); $user->created_at = Carbon::now()->subSeconds(181); $user->save(); @@ -610,12 +612,30 @@ $result = UsersController::statusInfo($user); $this->assertSame(['beta'], $result['skus']); + $this->assertTrue($result['enableBeta']); $user->assignSku(Sku::withEnvTenantContext()->where('title', 'groupware')->first()); $result = UsersController::statusInfo($user); $this->assertSame(['beta', 'groupware'], $result['skus']); + + // Degraded user + $user->status |= User::STATUS_DEGRADED; + $user->save(); + + $result = UsersController::statusInfo($user); + $this->assertTrue($result['enableBeta']); + $this->assertFalse($result['enableRooms']); + + // User in a tenant without 'room' SKU + $user->status = User::STATUS_LDAP_READY | User::STATUS_IMAP_READY | User::STATUS_ACTIVE; + $user->tenant_id = Tenant::where('title', 'Sample Tenant')->first()->id; + $user->save(); + + $result = UsersController::statusInfo($user); + $this->assertTrue($result['enableBeta']); + $this->assertFalse($result['enableRooms']); } /**