From 398867fa39813991e1e2e066ef6ef1fe9b29b32f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Jaussoin?= Date: Wed, 24 Nov 2021 17:16:07 +0100 Subject: [PATCH] Add a new endpoint to search an account by SIP address as an admin --- .../app/Http/Controllers/Api/Admin/AccountController.php | 5 +++++ .../resources/views/api/documentation_markdown.blade.php | 3 +++ flexiapi/routes/api.php | 1 + flexiapi/tests/Feature/AccountApiTest.php | 9 +++++++++ flexisip-account-manager.spec | 2 +- 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/flexiapi/app/Http/Controllers/Api/Admin/AccountController.php b/flexiapi/app/Http/Controllers/Api/Admin/AccountController.php index c335976..3da7894 100644 --- a/flexiapi/app/Http/Controllers/Api/Admin/AccountController.php +++ b/flexiapi/app/Http/Controllers/Api/Admin/AccountController.php @@ -47,6 +47,11 @@ class AccountController extends Controller return Account::without(['passwords', 'admin'])->findOrFail($id)->makeVisible(['confirmation_key']); } + public function search(Request $request, string $sip) + { + return Account::sip($sip)->firstOrFail(); + } + public function destroy(Request $request, $id) { $account = Account::findOrFail($id); diff --git a/flexiapi/resources/views/api/documentation_markdown.blade.php b/flexiapi/resources/views/api/documentation_markdown.blade.php index ced6360..15b1d21 100644 --- a/flexiapi/resources/views/api/documentation_markdown.blade.php +++ b/flexiapi/resources/views/api/documentation_markdown.blade.php @@ -186,6 +186,9 @@ Retrieve all the accounts, paginated. #### `GET /accounts/{id}` Retrieve a specific account. +#### `GET /accounts/{sip}/search` +Search for a specific account by sip address. + #### `DELETE /accounts/{id}` Delete a specific account and its related information. diff --git a/flexiapi/routes/api.php b/flexiapi/routes/api.php index aa982aa..7a0a824 100644 --- a/flexiapi/routes/api.php +++ b/flexiapi/routes/api.php @@ -58,6 +58,7 @@ Route::group(['middleware' => ['auth.digest_or_key']], function () { Route::get('accounts/{id}/deactivate', 'Api\Admin\AccountController@deactivate'); Route::post('accounts', 'Api\Admin\AccountController@store'); Route::get('accounts', 'Api\Admin\AccountController@index'); + Route::get('accounts/{sip}/search', 'Api\Admin\AccountController@search'); Route::get('accounts/{id}', 'Api\Admin\AccountController@show'); Route::delete('accounts/{id}', 'Api\Admin\AccountController@destroy'); diff --git a/flexiapi/tests/Feature/AccountApiTest.php b/flexiapi/tests/Feature/AccountApiTest.php index 259245f..33bd253 100644 --- a/flexiapi/tests/Feature/AccountApiTest.php +++ b/flexiapi/tests/Feature/AccountApiTest.php @@ -582,6 +582,15 @@ class AccountApiTest extends TestCase ->assertJson([ 'activated' => true ]); + + // Search feature + $this->keyAuthenticated($admin->account) + ->get($this->route.'/'.$password->account->identifier.'/search') + ->assertStatus(200) + ->assertJson([ + 'id' => $password->account->id, + 'activated' => true + ]); } public function testGetAll() diff --git a/flexisip-account-manager.spec b/flexisip-account-manager.spec index 8395644..2183678 100644 --- a/flexisip-account-manager.spec +++ b/flexisip-account-manager.spec @@ -8,7 +8,7 @@ #%define _datadir %{_datarootdir} #%define _docdir %{_datadir}/doc -%define build_number 114 +%define build_number 115 %define var_dir /var/opt/belledonne-communications %define opt_dir /opt/belledonne-communications/share/flexisip-account-manager