From 93e3a4e48ae0700f112ff816544e6decb4268f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Jaussoin?= Date: Thu, 5 Mar 2026 14:25:49 +0000 Subject: [PATCH] Fix FLEXIAPI-420 Call forwarding user panel --- .../Controllers/Account/AccountController.php | 7 +++ .../Account/CallForwardingController.php | 15 ++++++ .../Controllers/Account/FileController.php | 12 +++++ .../Account/PasswordController.php | 1 - .../Account/ProvisioningController.php | 2 +- .../Account/CallForwardingController.php | 16 ++++-- .../Admin/Account/FileController.php | 6 ++- flexiapi/lang/fr.json | 3 ++ .../account/call_forwardings/edit.blade.php | 17 +++++-- .../edit_select_part.blade.php | 2 +- .../{admin => }/account/file/delete.blade.php | 0 .../views/account/telephony.blade.php | 17 +++++++ .../views/account/voicemails/index.blade.php | 49 +++++++++++++++++++ .../admin/account/telephony/show.blade.php | 49 +------------------ .../api/documentation/accounts.blade.php | 2 +- .../accounts/voicemail.blade.php | 6 +-- .../resources/views/parts/errors.blade.php | 9 +++- .../resources/views/parts/sidebar.blade.php | 18 ++++--- .../views/parts/sidebar_items.blade.php | 6 +++ flexiapi/routes/api.php | 2 +- flexiapi/routes/web.php | 17 +++++-- flexiapi/tests/Feature/ApiVoicemailTest.php | 14 ------ 22 files changed, 179 insertions(+), 91 deletions(-) create mode 100644 flexiapi/app/Http/Controllers/Account/CallForwardingController.php rename flexiapi/resources/views/{admin => }/account/call_forwardings/edit.blade.php (56%) rename flexiapi/resources/views/{admin => }/account/call_forwardings/edit_select_part.blade.php (98%) rename flexiapi/resources/views/{admin => }/account/file/delete.blade.php (100%) create mode 100644 flexiapi/resources/views/account/telephony.blade.php create mode 100644 flexiapi/resources/views/account/voicemails/index.blade.php create mode 100644 flexiapi/resources/views/parts/sidebar_items.blade.php diff --git a/flexiapi/app/Http/Controllers/Account/AccountController.php b/flexiapi/app/Http/Controllers/Account/AccountController.php index 3373600..b2fef7a 100644 --- a/flexiapi/app/Http/Controllers/Account/AccountController.php +++ b/flexiapi/app/Http/Controllers/Account/AccountController.php @@ -40,6 +40,13 @@ class AccountController extends Controller ]); } + public function telephony(Request $request) + { + return view('account.telephony', [ + 'account' => $request->user() + ]); + } + public function store(WebRequest $request) { $account = (new AccountService())->store($request); diff --git a/flexiapi/app/Http/Controllers/Account/CallForwardingController.php b/flexiapi/app/Http/Controllers/Account/CallForwardingController.php new file mode 100644 index 0000000..7c127ac --- /dev/null +++ b/flexiapi/app/Http/Controllers/Account/CallForwardingController.php @@ -0,0 +1,15 @@ +update($request, $request->user()->id); + } +} diff --git a/flexiapi/app/Http/Controllers/Account/FileController.php b/flexiapi/app/Http/Controllers/Account/FileController.php index a596887..89d7cb7 100644 --- a/flexiapi/app/Http/Controllers/Account/FileController.php +++ b/flexiapi/app/Http/Controllers/Account/FileController.php @@ -5,6 +5,8 @@ namespace App\Http\Controllers\Account; use App\AccountFile; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Storage; +use Illuminate\Http\Request; +use \App\Http\Controllers\Admin\Account\FileController as AdminFileController; class FileController extends Controller { @@ -29,4 +31,14 @@ class FileController extends Controller return Storage::download($file->path); } + + public function delete(Request $request, string $fileId) + { + return (new AdminFileController)->delete($request->user()->id, $fileId); + } + + public function destroy(Request $request, string $fileId) + { + return (new AdminFileController)->destroy($request, $request->user()->id, $fileId); + } } diff --git a/flexiapi/app/Http/Controllers/Account/PasswordController.php b/flexiapi/app/Http/Controllers/Account/PasswordController.php index 260a34a..6cc84e9 100644 --- a/flexiapi/app/Http/Controllers/Account/PasswordController.php +++ b/flexiapi/app/Http/Controllers/Account/PasswordController.php @@ -21,7 +21,6 @@ namespace App\Http\Controllers\Account; use App\Http\Controllers\Controller; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Log; class PasswordController extends Controller diff --git a/flexiapi/app/Http/Controllers/Account/ProvisioningController.php b/flexiapi/app/Http/Controllers/Account/ProvisioningController.php index f4a95f9..b40c635 100644 --- a/flexiapi/app/Http/Controllers/Account/ProvisioningController.php +++ b/flexiapi/app/Http/Controllers/Account/ProvisioningController.php @@ -49,7 +49,7 @@ class ProvisioningController extends Controller public function qrcode(Request $request, string $provisioningToken) { - $account = Account::withoutGlobalScopes() + Account::withoutGlobalScopes() ->where('id', function ($query) use ($provisioningToken) { $query->select('account_id') ->from('provisioning_tokens') diff --git a/flexiapi/app/Http/Controllers/Admin/Account/CallForwardingController.php b/flexiapi/app/Http/Controllers/Admin/Account/CallForwardingController.php index ab4131c..d42e356 100644 --- a/flexiapi/app/Http/Controllers/Admin/Account/CallForwardingController.php +++ b/flexiapi/app/Http/Controllers/Admin/Account/CallForwardingController.php @@ -19,15 +19,21 @@ class CallForwardingController extends Controller $request->validate([ 'always.forward_to' => $forwardTo, - 'always.sip_uri' => 'nullable|starts_with:sip:|required_if:always.forward_to,sip_uri', + 'always.sip_uri' => array_key_exists('enabled', $request->get('always')) + ? 'nullable|starts_with:sip:|required_if:always.forward_to,sip_uri' + : 'nullable', 'always.contact_id' => ['required_if:always.forward_to,contact', Rule::in($contactsIds)], 'away.forward_to' => $forwardTo, - 'away.sip_uri' => 'nullable|starts_with:sip:|required_if:away.forward_to,sip_uri', + 'away.sip_uri' => array_key_exists('enabled', $request->get('away')) + ? 'nullable|starts_with:sip:|required_if:away.forward_to,sip_uri' + : 'nullable', 'away.contact_id' => ['required_if:away.forward_to,contact', Rule::in($contactsIds)], 'busy.forward_to' => $forwardTo, - 'busy.sip_uri' => 'nullable|starts_with:sip:|required_if:busy.forward_to,sip_uri', + 'busy.sip_uri' => array_key_exists('enabled', $request->get('busy')) + ? 'nullable|starts_with:sip:|required_if:busy.forward_to,sip_uri' + : 'nullable', 'busy.contact_id' => ['required_if:busy.forward_to,contact', Rule::in($contactsIds)], ]); @@ -72,6 +78,8 @@ class CallForwardingController extends Controller $busyForwarding->save(); } - return redirect()->route('admin.account.telephony.show', $account); + return $request->user() + ? redirect()->route('admin.account.telephony.show', $account) + : redirect()->route('account.telephony'); } } diff --git a/flexiapi/app/Http/Controllers/Admin/Account/FileController.php b/flexiapi/app/Http/Controllers/Admin/Account/FileController.php index 26d55eb..b41c170 100644 --- a/flexiapi/app/Http/Controllers/Admin/Account/FileController.php +++ b/flexiapi/app/Http/Controllers/Admin/Account/FileController.php @@ -13,7 +13,7 @@ class FileController extends Controller $account = Account::findOrFail($accountId); $file = $account->files()->where('id', $fileId)->firstOrFail(); - return view('admin.account.file.delete', [ + return view('account.file.delete', [ 'account' => $account, 'file' => $file ]); @@ -27,6 +27,8 @@ class FileController extends Controller ->firstOrFail(); $accountFile->delete(); - return redirect()->route('admin.account.show', $account)->withFragment('#files'); + return $request->user()->admin + ? redirect()->route('admin.account.telephony.show', $account)->withFragment('#files') + : redirect()->route('account.telephony')->withFragment('#files'); } } diff --git a/flexiapi/lang/fr.json b/flexiapi/lang/fr.json index 7bdeb9b..f82dcdc 100644 --- a/flexiapi/lang/fr.json +++ b/flexiapi/lang/fr.json @@ -21,6 +21,7 @@ "Admin": "Administrateur", "Administration": "Administration", "Admins": "Administrateurs", + "All incoming calls are forwarded, whether you answer, decline the call or are already on a call.": "Tous les appels entrants sont renvoyés, que vous répondiez, refusiez l’appel ou soyez déjà en ligne.", "All the calls": "Tous les appels", "All the admins will be super admins": "Tous les administrateurs seront super-administrateurs", "Allow a custom CSS theme": "Autoriser un thème CSS personnalisé", @@ -39,6 +40,8 @@ "By email": "Inscription par email", "By phone": "Par téléphone", "By": "Par", + "Calls are only forwarded when your line is busy with another call.": "Les appels sont renvoyés uniquement lorsque votre ligne est occupée par un autre appel.", + "Calls are only forwarded if you do not answer or if you decline the call.": "Les appels sont renvoyés uniquement si vous ne répondez pas ou si vous refusez l’appel.", "Call Recording": "Enregistrement d'appels", "Call Forwarding": "Redirection d'appels", "Calls logs": "Journaux d'appel", diff --git a/flexiapi/resources/views/admin/account/call_forwardings/edit.blade.php b/flexiapi/resources/views/account/call_forwardings/edit.blade.php similarity index 56% rename from flexiapi/resources/views/admin/account/call_forwardings/edit.blade.php rename to flexiapi/resources/views/account/call_forwardings/edit.blade.php index 6f765a0..ef50dbd 100644 --- a/flexiapi/resources/views/admin/account/call_forwardings/edit.blade.php +++ b/flexiapi/resources/views/account/call_forwardings/edit.blade.php @@ -2,7 +2,7 @@ {{ __('Call Forwarding') }} -
+ @csrf @method('put') @php($callForwardings = $account->callForwardingsDefault) @@ -16,7 +16,10 @@ - @include('admin.account.call_forwardings.edit_select_part', ['callForwarding' => $callForwardings, 'type' => 'always']) + @include('account.call_forwardings.edit_select_part', ['callForwarding' => $callForwardings, 'type' => 'always']) + @if (!$account->admin) + {{ __('All incoming calls are forwarded, whether you answer, decline the call or are already on a call.') }} + @endif
@@ -28,7 +31,10 @@ - @include('admin.account.call_forwardings.edit_select_part', ['callForwarding' => $callForwardings, 'type' => 'away']) + @include('account.call_forwardings.edit_select_part', ['callForwarding' => $callForwardings, 'type' => 'away']) + @if (!$account->admin) + {{ __('Calls are only forwarded when your line is busy with another call.') }} + @endif
@@ -40,7 +46,10 @@ - @include('admin.account.call_forwardings.edit_select_part', ['callForwarding' => $callForwardings, 'type' => 'busy']) + @include('account.call_forwardings.edit_select_part', ['callForwarding' => $callForwardings, 'type' => 'busy']) + @if (!$account->admin) + {{ __('Calls are only forwarded if you do not answer or if you decline the call.') }} + @endif
diff --git a/flexiapi/resources/views/admin/account/call_forwardings/edit_select_part.blade.php b/flexiapi/resources/views/account/call_forwardings/edit_select_part.blade.php similarity index 98% rename from flexiapi/resources/views/admin/account/call_forwardings/edit_select_part.blade.php rename to flexiapi/resources/views/account/call_forwardings/edit_select_part.blade.php index 356520c..26af74c 100644 --- a/flexiapi/resources/views/admin/account/call_forwardings/edit_select_part.blade.php +++ b/flexiapi/resources/views/account/call_forwardings/edit_select_part.blade.php @@ -1,4 +1,4 @@ -
+