diff --git a/flexiapi/app/Http/Controllers/Api/Admin/Space/CardDavServerController.php b/flexiapi/app/Http/Controllers/Api/Admin/Space/CardDavServerController.php index 9f596d3..3dd3835 100644 --- a/flexiapi/app/Http/Controllers/Api/Admin/Space/CardDavServerController.php +++ b/flexiapi/app/Http/Controllers/Api/Admin/Space/CardDavServerController.php @@ -11,19 +11,19 @@ use App\SpaceCardDavServer; class CardDavServerController extends Controller { - public function index(string $host) + public function index(string $domain) { - return Space::where('host', $host)->firstOrFail()->carddavServers; + return Space::where('domain', $domain)->firstOrFail()->carddavServers; } - public function show(string $host, int $carddavServerId) + public function show(string $domain, int $carddavServerId) { - return Space::where('host', $host)->firstOrFail()->carddavServers()->findOrFail($carddavServerId); + return Space::where('domain', $domain)->firstOrFail()->carddavServers()->findOrFail($carddavServerId); } - public function store(CardDavServer $request, string $host) + public function store(CardDavServer $request, string $domain) { - $space = Space::where('host', $host)->firstOrFail(); + $space = Space::where('domain', $domain)->firstOrFail(); $carddavServer = new SpaceCardDavServer; $carddavServer->space_id = $space->id; @@ -34,9 +34,9 @@ class CardDavServerController extends Controller return $carddavServer->save(); } - public function update(CardDavServer $request, string $host, int $carddavServerId) + public function update(CardDavServer $request, string $domain, int $carddavServerId) { - $space = Space::where('host', $host)->firstOrFail(); + $space = Space::where('domain', $domain)->firstOrFail(); $carddavServer = $space->carddavServers()->findOrFail($carddavServerId); $carddavServer->fill($request->validated()); @@ -46,9 +46,9 @@ class CardDavServerController extends Controller return $carddavServer->save(); } - public function destroy(string $host, int $carddavServerId) + public function destroy(string $domain, int $carddavServerId) { - $space = Space::where('host', $host)->firstOrFail(); + $space = Space::where('domain', $domain)->firstOrFail(); $carddavServer = $space->carddavServers()->findOrFail($carddavServerId); return $carddavServer->delete(); diff --git a/flexiapi/app/Http/Controllers/Api/Admin/SpaceController.php b/flexiapi/app/Http/Controllers/Api/Admin/SpaceController.php index 93c3966..ffdf321 100644 --- a/flexiapi/app/Http/Controllers/Api/Admin/SpaceController.php +++ b/flexiapi/app/Http/Controllers/Api/Admin/SpaceController.php @@ -131,33 +131,33 @@ class SpaceController extends Controller $space->name = $request->get('name'); $space->host = $request->get('host'); $space->super = $request->get('super'); - $space->disable_chat_feature = $request->get('disable_chat_feature'); - $space->disable_meetings_feature = $request->get('disable_meetings_feature'); - $space->disable_broadcast_feature = $request->get('disable_broadcast_feature'); - $space->hide_settings = $request->get('hide_settings'); - $space->hide_account_settings = $request->get('hide_account_settings'); - $space->disable_call_recordings_feature = $request->get('disable_call_recordings_feature'); - $space->only_display_sip_uri_username = $request->get('only_display_sip_uri_username'); - $space->assistant_hide_create_account = $request->get('assistant_hide_create_account'); - $space->assistant_disable_qr_code = $request->get('assistant_disable_qr_code'); - $space->assistant_hide_third_party_account = $request->get('assistant_hide_third_party_account'); - $space->max_account = $request->get('max_account', 0); - $space->max_accounts = $request->get('max_accounts', 0); - $space->expire_at = $request->get('expire_at'); - - $space->copyright_text = $request->get('copyright_text'); - $space->intro_registration_text = $request->get('intro_registration_text'); - $space->newsletter_registration_address = $request->get('newsletter_registration_address'); $space->account_proxy_registrar_address = $request->get('account_proxy_registrar_address'); $space->account_realm = $request->get('account_realm'); + $space->assistant_disable_qr_code = $request->get('assistant_disable_qr_code'); + $space->assistant_hide_create_account = $request->get('assistant_hide_create_account'); + $space->assistant_hide_third_party_account = $request->get('assistant_hide_third_party_account'); + $space->copyright_text = $request->get('copyright_text'); + $space->carddav_user_credentials = $request->get('carddav_user_credentials'); $space->custom_provisioning_entries = $request->get('custom_provisioning_entries'); $space->custom_provisioning_overwrite_all = $request->get('custom_provisioning_overwrite_all'); - $space->provisioning_use_linphone_provisioning_header = $request->get('provisioning_use_linphone_provisioning_header'); $space->custom_theme = $request->get('custom_theme'); - $space->web_panel = $request->get('web_panel'); - $space->public_registration = $request->get('public_registration'); - $space->phone_registration = $request->get('phone_registration'); + $space->disable_broadcast_feature = $request->get('disable_broadcast_feature'); + $space->disable_call_recordings_feature = $request->get('disable_call_recordings_feature'); + $space->disable_chat_feature = $request->get('disable_chat_feature'); + $space->disable_meetings_feature = $request->get('disable_meetings_feature'); + $space->expire_at = $request->get('expire_at'); + $space->hide_account_settings = $request->get('hide_account_settings'); + $space->hide_settings = $request->get('hide_settings'); $space->intercom_features = $request->get('intercom_features'); + $space->intro_registration_text = $request->get('intro_registration_text'); + $space->max_account = $request->get('max_account', 0); + $space->max_accounts = $request->get('max_accounts', 0); + $space->newsletter_registration_address = $request->get('newsletter_registration_address'); + $space->only_display_sip_uri_username = $request->get('only_display_sip_uri_username'); + $space->phone_registration = $request->get('phone_registration'); + $space->provisioning_use_linphone_provisioning_header = $request->get('provisioning_use_linphone_provisioning_header'); + $space->public_registration = $request->get('public_registration'); + $space->web_panel = $request->get('web_panel'); $space->save(); diff --git a/flexiapi/tests/Feature/ApiSpaceCardDavServersTest.php b/flexiapi/tests/Feature/ApiSpaceCardDavServersTest.php index 53f4d70..1da69e6 100644 --- a/flexiapi/tests/Feature/ApiSpaceCardDavServersTest.php +++ b/flexiapi/tests/Feature/ApiSpaceCardDavServersTest.php @@ -35,7 +35,7 @@ class ApiSpaceCardDavServersTest extends TestCase $admin = Account::factory()->admin()->create(); $admin->generateUserApiKey(); - $route = $this->spaceRoute . '/' . $admin->space->host . '/carddavs'; + $route = $this->spaceRoute . '/' . $admin->space->domain . '/carddavs'; $uri = 'http://test.com'; $this->keyAuthenticated($admin) @@ -50,10 +50,30 @@ class ApiSpaceCardDavServersTest extends TestCase $superAdmin = Account::factory()->superAdmin()->create(); $superAdmin->generateUserApiKey(); - $route = $this->spaceRoute . '/' . $superAdmin->space->host . '/carddavs'; + $route = $this->spaceRoute . '/' . $superAdmin->space->domain . '/carddavs'; + $uri = 'http://test.com'; $uri2 = 'http://test2.com'; + // Test with a standard admin first + + $superAdmin->space->super = false; + $superAdmin->space->save(); + + $this->keyAuthenticated($superAdmin) + ->json('GET', $route) + ->assertStatus(403); + + $superAdmin->space->super = true; + $superAdmin->space->save(); + + // Super Admin again + + $this->keyAuthenticated($superAdmin) + ->json('GET', $route) + ->assertJson([]) + ->assertStatus(200); + $this->keyAuthenticated($superAdmin) ->json('POST', $route, [ 'uri' => $uri @@ -133,7 +153,7 @@ class ApiSpaceCardDavServersTest extends TestCase 'algorithm' => 'MD5' ]; - $route = $this->spaceRoute . '/' . $admin->space->host . '/carddavs'; + $route = $this->spaceRoute . '/' . $admin->space->domain . '/carddavs'; // Creating the CardDav $this->keyAuthenticated($superAdmin) @@ -143,7 +163,16 @@ class ApiSpaceCardDavServersTest extends TestCase ->assertStatus(200); // Allowing CardDav credentials for Admin 1 space - Space::where('domain', $admin->domain)->update(['carddav_user_credentials' => true]); + $server = $this->keyAuthenticated($admin) + ->json('GET', $this->spaceRoute . '/' . $admin->space->domain) + ->assertStatus(200) + ->json(); + + $server['carddav_user_credentials'] = true; + + $this->keyAuthenticated($admin) + ->json('PUT', $this->spaceRoute . '/' . $admin->space->domain, $server) + ->assertStatus(200); // First Admin can get its own credentials $this->keyAuthenticated($admin) @@ -182,7 +211,7 @@ class ApiSpaceCardDavServersTest extends TestCase Space::where('domain', $user->domain)->update(['super' => true]); $this->keyAuthenticated($admin) - ->json('POST', $this->spaceRoute . '/' . $admin->space->host . '/carddavs', [ + ->json('POST', $this->spaceRoute . '/' . $admin->space->domain . '/carddavs', [ 'uri' => 'http://uri.com' ]) ->assertStatus(200);