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
@@ -214,7 +214,17 @@
$state = 'failed';
}
+ // Check if the user is a controller of his wallet
+ $isController = $user->canDelete($user);
+ $hasCustomDomain = $user->wallet()->entitlements()
+ ->where('entitleable_type', Domain::class)
+ ->count() > 0;
+
return [
+ // TODO: This will change when we enable all users to create domains
+ 'enableDomains' => $isController && $hasCustomDomain,
+ 'enableUsers' => $isController,
+ 'enableWallets' => $isController,
'process' => $process,
'processState' => $state,
'isReady' => $all === $checked,
diff --git a/src/resources/sass/menu.scss b/src/resources/sass/menu.scss
--- a/src/resources/sass/menu.scss
+++ b/src/resources/sass/menu.scss
@@ -38,6 +38,7 @@
#footer-menu {
background-color: $main-color;
height: 100px;
+ overflow: hidden;
.navbar-brand {
margin: 0;
diff --git a/src/resources/vue/Dashboard.vue b/src/resources/vue/Dashboard.vue
--- a/src/resources/vue/Dashboard.vue
+++ b/src/resources/vue/Dashboard.vue
@@ -6,13 +6,13 @@
Your profile
-
+
Domains
-
+
User accounts
-
+
Wallet
{{ $root.price(balance) }}
diff --git a/src/tests/Browser/DomainTest.php b/src/tests/Browser/DomainTest.php
--- a/src/tests/Browser/DomainTest.php
+++ b/src/tests/Browser/DomainTest.php
@@ -144,14 +144,20 @@
$browser->visit('/login')
->on(new Home())
->submitLogon('jack@kolab.org', 'simple123', true)
- // On dashboard click the "Domains" link
->on(new Dashboard())
+ ->assertVisible('@links a.link-profile')
+ ->assertMissing('@links a.link-domains')
+ ->assertMissing('@links a.link-users')
+ ->assertMissing('@links a.link-wallet');
+/*
+ // On dashboard click the "Domains" link
->assertSeeIn('@links a.link-domains', 'Domains')
->click('@links a.link-domains')
// On Domains List page click the domain entry
->on(new DomainList())
->assertMissing('@table tbody')
->assertSeeIn('tfoot td', 'There are no domains in this account.');
+*/
});
}
}
diff --git a/src/tests/Browser/LogonTest.php b/src/tests/Browser/LogonTest.php
--- a/src/tests/Browser/LogonTest.php
+++ b/src/tests/Browser/LogonTest.php
@@ -72,10 +72,13 @@
{
$this->browse(function (Browser $browser) {
$browser->visit(new Home())
- ->submitLogon('john@kolab.org', 'simple123', true);
-
- // Checks if we're really on Dashboard page
- $browser->on(new Dashboard())
+ ->submitLogon('john@kolab.org', 'simple123', true)
+ // Checks if we're really on Dashboard page
+ ->on(new Dashboard())
+ ->assertVisible('@links a.link-profile')
+ ->assertVisible('@links a.link-domains')
+ ->assertVisible('@links a.link-users')
+ ->assertVisible('@links a.link-wallet')
->within(new Menu(), function ($browser) {
$browser->assertMenuItems(['support', 'contact', 'webmail', 'logout']);
});
@@ -201,7 +204,8 @@
$browser->type('@second-factor-input', $code)
->press('form button')
->waitUntilMissing('@second-factor-input.is-invalid')
- ->waitForLocation('/dashboard')->on(new Dashboard());
+ ->waitForLocation('/dashboard')
+ ->on(new Dashboard());
});
}
}
diff --git a/src/tests/Browser/SignupTest.php b/src/tests/Browser/SignupTest.php
--- a/src/tests/Browser/SignupTest.php
+++ b/src/tests/Browser/SignupTest.php
@@ -369,7 +369,11 @@
$browser->waitUntilMissing('@step3')
->waitUntilMissing('.app-loader')
->on(new Dashboard())
- ->assertUser('signuptestdusk@' . \config('app.domain'));
+ ->assertUser('signuptestdusk@' . \config('app.domain'))
+ ->assertVisible('@links a.link-profile')
+ ->assertMissing('@links a.link-domains')
+ ->assertVisible('@links a.link-users')
+ ->assertVisible('@links a.link-wallet');
// Logout the user
$browser->within(new Menu(), function ($browser) {
@@ -466,7 +470,11 @@
$browser->waitUntilMissing('@step3')
->waitUntilMissing('.app-loader')
->on(new Dashboard())
- ->assertUser('admin@user-domain-signup.com');
+ ->assertUser('admin@user-domain-signup.com')
+ ->assertVisible('@links a.link-profile')
+ ->assertVisible('@links a.link-domains')
+ ->assertVisible('@links a.link-users')
+ ->assertVisible('@links a.link-wallet');
$browser->within(new Menu(), function ($browser) {
$browser->clickMenuItem('logout');
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
@@ -913,6 +913,11 @@
$this->assertSame($wallet->id, $result['wallet']['id']);
$this->assertArrayNotHasKey('discount', $result['wallet']);
+ $this->assertTrue($result['statusInfo']['enableDomains']);
+ $this->assertTrue($result['statusInfo']['enableWallets']);
+ $this->assertTrue($result['statusInfo']['enableUsers']);
+
+ // Ned is John's wallet controller
$ned = $this->getTestUser('ned@kolab.org');
$ned_wallet = $ned->wallets()->first();
$result = $this->invokeMethod(new UsersController(), 'userResponse', [$ned]);
@@ -929,6 +934,10 @@
$this->assertSame($provider, $result['wallet']['provider']);
$this->assertSame($provider, $result['wallets'][0]['provider']);
+ $this->assertTrue($result['statusInfo']['enableDomains']);
+ $this->assertTrue($result['statusInfo']['enableWallets']);
+ $this->assertTrue($result['statusInfo']['enableUsers']);
+
// Test discount in a response
$discount = Discount::where('code', 'TEST')->first();
$wallet->discount()->associate($discount);
@@ -948,6 +957,14 @@
$this->assertSame($discount->discount, $result['wallets'][0]['discount']);
$this->assertSame($discount->description, $result['wallets'][0]['discount_description']);
$this->assertSame($mod_provider, $result['wallets'][0]['provider']);
+
+ // Jack is not a John's wallet controller
+ $jack = $this->getTestUser('jack@kolab.org');
+ $result = $this->invokeMethod(new UsersController(), 'userResponse', [$jack]);
+
+ $this->assertFalse($result['statusInfo']['enableDomains']);
+ $this->assertFalse($result['statusInfo']['enableWallets']);
+ $this->assertFalse($result['statusInfo']['enableUsers']);
}
/**