From 01607797847e863268ce73f9b81201204871f5b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Jaussoin?= Date: Wed, 23 Apr 2025 13:01:45 +0000 Subject: [PATCH] Fix FLEXIAPI-232 Add provisioning email --- CHANGELOG.md | 1 + .../Controllers/Account/DeviceController.php | 13 - .../Admin/AccountAccountTypeController.php | 4 +- .../Admin/AccountActionController.php | 6 +- .../Admin/AccountContactController.php | 19 +- .../Controllers/Admin/AccountController.php | 27 +- .../Admin/AccountDictionaryController.php | 16 +- .../Admin/ContactsListController.php | 4 - .../Admin/ExternalAccountController.php | 4 +- .../Admin/ProvisioningEmailController.php | 37 ++ .../Admin/ResetPasswordEmailController.php | 1 + flexiapi/app/Mail/Provisioning.php | 41 ++ flexiapi/composer.lock | 63 +-- flexiapi/lang/fr.json | 3 + flexiapi/public/css/form.css | 13 +- flexiapi/public/css/style.css | 51 ++- .../resources/views/account/delete.blade.php | 2 +- .../views/account/email/validate.blade.php | 2 +- .../resources/views/account/login.blade.php | 2 +- .../views/account/password.blade.php | 2 +- .../views/account/phone/validate.blade.php | 2 +- .../views/account/register/email.blade.php | 2 +- .../views/account/register/phone.blade.php | 2 +- .../account/account_type/create.blade.php | 2 +- .../account/action/create_edit.blade.php | 2 +- .../admin/account/action/delete.blade.php | 2 +- .../admin/account/activity/index.blade.php | 431 +++++++++--------- .../admin/account/contact/create.blade.php | 4 +- .../admin/account/contact/delete.blade.php | 2 +- .../admin/account/contact/index.blade.php | 97 ++++ .../views/admin/account/create_edit.blade.php | 143 +----- .../views/admin/account/delete.blade.php | 4 +- .../admin/account/device/delete.blade.php | 2 +- .../admin/account/device/index.blade.php | 46 -- .../account/dictionary/create_edit.blade.php | 7 +- .../admin/account/dictionary/delete.blade.php | 7 +- .../admin/account/dictionary/index.blade.php | 56 --- .../admin/account/external/delete.blade.php | 4 +- .../admin/account/external/show.blade.php | 4 +- .../admin/account/import/check.blade.php | 4 +- .../admin/account/import/create.blade.php | 2 +- .../views/admin/account/index.blade.php | 30 +- .../admin/account/parts/badges.blade.php | 11 + .../parts/breadcrumb_accounts_edit.blade.php | 3 - .../parts/breadcrumb_accounts_show.blade.php | 3 + .../views/admin/account/parts/tabs.blade.php | 12 +- .../provisioning_email/create.blade.php | 27 ++ .../reset_password_email/create.blade.php | 8 +- .../views/admin/account/show.blade.php | 286 ++++++++++++ .../admin/account/statistics/show.blade.php | 2 +- .../statistics/show_call_logs.blade.php | 4 +- .../views/admin/account/type/index.blade.php | 10 +- .../views/admin/api_key/create.blade.php | 2 +- .../views/admin/api_key/delete.blade.php | 2 +- .../views/admin/api_key/index.blade.php | 4 +- .../contacts_list/contacts/add.blade.php | 4 +- .../admin/contacts_list/create_edit.blade.php | 12 +- .../admin/contacts_list/delete.blade.php | 2 +- .../views/admin/phone_country/index.blade.php | 10 +- .../views/admin/space/create.blade.php | 2 +- .../views/admin/space/delete.blade.php | 2 +- .../admin/space/email_server/delete.blade.php | 2 +- .../views/admin/space/integration.blade.php | 4 +- .../views/admin/space/show.blade.php | 8 +- .../admin/statistics/parts/filters.blade.php | 4 +- .../admin/statistics/show_call_logs.blade.php | 2 +- .../resources/views/errors/minimal.blade.php | 2 +- .../views/mails/provisioning.blade.php | 20 + .../provisioning_custom.blade.php.example | 19 + .../views/mails/provisioning_text.blade.php | 10 + ...provisioning_text_custom.blade.php.example | 10 + flexiapi/routes/web.php | 70 +-- 72 files changed, 1037 insertions(+), 686 deletions(-) create mode 100644 flexiapi/app/Http/Controllers/Admin/ProvisioningEmailController.php create mode 100644 flexiapi/app/Mail/Provisioning.php create mode 100644 flexiapi/resources/views/admin/account/contact/index.blade.php delete mode 100644 flexiapi/resources/views/admin/account/device/index.blade.php delete mode 100644 flexiapi/resources/views/admin/account/dictionary/index.blade.php create mode 100644 flexiapi/resources/views/admin/account/parts/badges.blade.php delete mode 100644 flexiapi/resources/views/admin/account/parts/breadcrumb_accounts_edit.blade.php create mode 100644 flexiapi/resources/views/admin/account/parts/breadcrumb_accounts_show.blade.php create mode 100644 flexiapi/resources/views/admin/account/provisioning_email/create.blade.php create mode 100644 flexiapi/resources/views/admin/account/show.blade.php create mode 100644 flexiapi/resources/views/mails/provisioning.blade.php create mode 100644 flexiapi/resources/views/mails/provisioning_custom.blade.php.example create mode 100644 flexiapi/resources/views/mails/provisioning_text.blade.php create mode 100644 flexiapi/resources/views/mails/provisioning_text_custom.blade.php.example diff --git a/CHANGELOG.md b/CHANGELOG.md index 9692375..29b7c36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ v1.7 - Fix FLEXIAPI-277 Restrict authorized ini keys that can be set to prevent conflict with the existing ones set in the UI - Fix FLEXIAPI-272 Add Space based email server integration - Fix FLEXIAPI-284 Add configurable admin API Keys +- Fix FLEXIAPI-232 Add provisioning email + important redesign of the contacts page v1.6 ---- diff --git a/flexiapi/app/Http/Controllers/Account/DeviceController.php b/flexiapi/app/Http/Controllers/Account/DeviceController.php index 38ab6bb..879b64e 100644 --- a/flexiapi/app/Http/Controllers/Account/DeviceController.php +++ b/flexiapi/app/Http/Controllers/Account/DeviceController.php @@ -25,19 +25,6 @@ use App\Libraries\FlexisipRedisConnector; class DeviceController extends Controller { - public function index(Request $request) - { - $connector = new FlexisipRedisConnector; - - return view( - 'account.device.index', - [ - 'account' => $request->user(), - 'devices' => $connector->getDevices($request->user()->identifier) - ] - ); - } - public function delete(Request $request, string $uuid) { $connector = new FlexisipRedisConnector; diff --git a/flexiapi/app/Http/Controllers/Admin/AccountAccountTypeController.php b/flexiapi/app/Http/Controllers/Admin/AccountAccountTypeController.php index b84ba61..110569e 100644 --- a/flexiapi/app/Http/Controllers/Admin/AccountAccountTypeController.php +++ b/flexiapi/app/Http/Controllers/Admin/AccountAccountTypeController.php @@ -55,7 +55,7 @@ class AccountAccountTypeController extends Controller Log::channel('events')->info('Web Admin: Account type attached', ['id' => $account->identifier, 'type_id' => $request->get('account_type_id')]); - return redirect()->route('admin.account.edit', $account); + return redirect()->route('admin.account.show', $account)->withFragment('#types'); } public function destroy(Request $request, int $id, int $typeId) @@ -66,6 +66,6 @@ class AccountAccountTypeController extends Controller Log::channel('events')->info('Web Admin: Account type detached', ['id' => $account->identifier, 'type_id' => $request->get('account_type_id')]); - return redirect()->route('admin.account.edit', $account); + return redirect()->route('admin.account.show', $account)->withFragment('#types'); } } diff --git a/flexiapi/app/Http/Controllers/Admin/AccountActionController.php b/flexiapi/app/Http/Controllers/Admin/AccountActionController.php index f890636..c3d1d1f 100644 --- a/flexiapi/app/Http/Controllers/Admin/AccountActionController.php +++ b/flexiapi/app/Http/Controllers/Admin/AccountActionController.php @@ -56,7 +56,7 @@ class AccountActionController extends Controller Log::channel('events')->info('Web Admin: Account action created', ['id' => $account->identifier, 'action' => $accountAction->key]); - return redirect()->route('admin.account.edit', $accountAction->account); + return redirect()->route('admin.account.show', $accountAction->account)->withFragment('#actions'); } public function edit(int $accountId, int $actionId) @@ -91,7 +91,7 @@ class AccountActionController extends Controller Log::channel('events')->info('Web Admin: Account action updated', ['id' => $account->identifier, 'action' => $accountAction->key]); - return redirect()->route('admin.account.edit', $account); + return redirect()->route('admin.account.show', $account)->withFragment('#actions'); } public function delete(int $accountId, int $actionId) @@ -116,6 +116,6 @@ class AccountActionController extends Controller Log::channel('events')->info('Web Admin: Account action deleted', ['id' => $accountAction->account->identifier, 'action_id' => $accountAction->key]); - return redirect()->route('admin.account.edit', $accountAction->account); + return redirect()->route('admin.account.show', $accountAction->account)->withFragment('#actions'); } } diff --git a/flexiapi/app/Http/Controllers/Admin/AccountContactController.php b/flexiapi/app/Http/Controllers/Admin/AccountContactController.php index d8df191..ff8c46e 100644 --- a/flexiapi/app/Http/Controllers/Admin/AccountContactController.php +++ b/flexiapi/app/Http/Controllers/Admin/AccountContactController.php @@ -24,9 +24,24 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use App\Account; +use App\ContactsList; class AccountContactController extends Controller { + public function index(int $accountId) + { + $account = Account::findOrFail($accountId); + + return view('admin.account.contact.index', [ + 'account' => $account, + 'contacts_lists' => ContactsList::whereNotIn('id', function ($query) use ($accountId) { + $query->select('contacts_list_id') + ->from('account_contacts_list') + ->where('account_id', $accountId); + })->withCount('contacts')->get() + ]); + } + public function create(int $accountId) { $account = Account::findOrFail($accountId); @@ -56,7 +71,7 @@ class AccountContactController extends Controller Log::channel('events')->info('Web Admin: Account contact added', ['id' => $account->identifier, 'contact' => $contact->identifier]); - return redirect()->route('admin.account.edit', $account); + return redirect()->route('admin.account.contact.index', $account); } public function delete(int $accountId, int $contactId) @@ -79,6 +94,6 @@ class AccountContactController extends Controller Log::channel('events')->info('Web Admin: Account contact removed', ['id' => $account->identifier, 'contact' => $contact->identifier]); - return redirect()->route('admin.account.edit', $account); + return redirect()->route('admin.account.contact.index', $account); } } diff --git a/flexiapi/app/Http/Controllers/Admin/AccountController.php b/flexiapi/app/Http/Controllers/Admin/AccountController.php index b52391b..91fb67f 100644 --- a/flexiapi/app/Http/Controllers/Admin/AccountController.php +++ b/flexiapi/app/Http/Controllers/Admin/AccountController.php @@ -27,6 +27,7 @@ use App\Account; use App\ContactsList; use App\Http\Requests\Account\Create\Web\AsAdminRequest; use App\Http\Requests\Account\Update\Web\AsAdminRequest as WebAsAdminRequest; +use App\Libraries\FlexisipRedisConnector; use App\Services\AccountService; use App\Space; @@ -39,8 +40,7 @@ class AccountController extends Controller 'order_sort' => 'in:asc,desc', ]); - $accounts = Account::with('contactsLists') - ->orderBy($request->get('order_by', 'updated_at'), $request->get('order_sort', 'desc')); + $accounts = Account::orderBy($request->get('order_by', 'updated_at'), $request->get('order_sort', 'desc')); if ($request->has('search')) { $accounts = $accounts->where('username', 'like', '%' . $request->get('search') . '%'); @@ -75,6 +75,16 @@ class AccountController extends Controller return redirect()->route('admin.account.index', $request->except('_token', 'query')); } + public function show(Request $request, int $accountId) + { + $account = Account::findOrFail($accountId); + + return view('admin.account.show', [ + 'account' => $account, + 'devices' => (new FlexisipRedisConnector)->getDevices($account->identifier) + ]); + } + public function create(Request $request) { $account = new Account; @@ -102,7 +112,7 @@ class AccountController extends Controller Log::channel('events')->info('Web Admin: Account created', ['id' => $account->identifier]); - return redirect()->route('admin.account.edit', $account->id); + return redirect()->route('admin.account.show', $account); } public function edit(Request $request, int $accountId) @@ -115,11 +125,6 @@ class AccountController extends Controller 'domains' => $request->user()?->superAdmin ? Space::all() : Space::where('domain', $account->domain)->get(), - 'contacts_lists' => ContactsList::whereNotIn('id', function ($query) use ($accountId) { - $query->select('contacts_list_id') - ->from('account_contacts_list') - ->where('account_id', $accountId); - })->get() ]); } @@ -129,7 +134,7 @@ class AccountController extends Controller Log::channel('events')->info('Web Admin: Account updated', ['id' => $account->identifier]); - return redirect()->route('admin.account.edit', $accountId); + return redirect()->route('admin.account.show', $accountId); } public function provision(int $accountId) @@ -173,7 +178,7 @@ class AccountController extends Controller $account->contactsLists()->detach([$request->get('contacts_list_id')]); $account->contactsLists()->attach([$request->get('contacts_list_id')]); - return redirect()->route('admin.account.edit', $accountId)->withFragment('#contacts_lists'); + return redirect()->route('admin.account.contact.index', $accountId)->withFragment('#contacts_lists'); } public function contactsListRemove(Request $request, int $accountId) @@ -181,6 +186,6 @@ class AccountController extends Controller $account = Account::findOrFail($accountId); $account->contactsLists()->detach([$request->get('contacts_list_id')]); - return redirect()->route('admin.account.edit', $accountId)->withFragment('#contacts_lists'); + return redirect()->route('admin.account.contact.index', $accountId)->withFragment('#contacts_lists'); } } diff --git a/flexiapi/app/Http/Controllers/Admin/AccountDictionaryController.php b/flexiapi/app/Http/Controllers/Admin/AccountDictionaryController.php index b87f78c..5c6112f 100644 --- a/flexiapi/app/Http/Controllers/Admin/AccountDictionaryController.php +++ b/flexiapi/app/Http/Controllers/Admin/AccountDictionaryController.php @@ -27,16 +27,6 @@ use App\AccountDictionaryEntry; class AccountDictionaryController extends Controller { - public function index(int $accountId) - { - return view( - 'admin.account.dictionary.index', - [ - 'account' => Account::findOrFail($accountId) - ] - ); - } - public function create(int $accountId) { return view('admin.account.dictionary.create_edit', [ @@ -61,7 +51,7 @@ class AccountDictionaryController extends Controller accountServiceAccountEditedHook($request, $account); } - return redirect()->route('admin.account.dictionary.index', $account->id); + return redirect()->route('admin.account.show', $account); } public function edit(int $accountId, string $key) @@ -91,7 +81,7 @@ class AccountDictionaryController extends Controller accountServiceAccountEditedHook($request, $account); } - return redirect()->route('admin.account.dictionary.index', $account->id); + return redirect()->route('admin.account.show', $account); } public function delete(int $accountId, string $key) @@ -112,6 +102,6 @@ class AccountDictionaryController extends Controller $account = Account::findOrFail($accountId); $account->dictionaryEntries()->where('key', $request->get('key'))->delete(); - return redirect()->route('admin.account.dictionary.index', $account); + return redirect()->route('admin.account.show', $account); } } diff --git a/flexiapi/app/Http/Controllers/Admin/ContactsListController.php b/flexiapi/app/Http/Controllers/Admin/ContactsListController.php index bb00d54..4501c02 100644 --- a/flexiapi/app/Http/Controllers/Admin/ContactsListController.php +++ b/flexiapi/app/Http/Controllers/Admin/ContactsListController.php @@ -43,10 +43,6 @@ class ContactsListController extends Controller ]); } - public function show(int $id) - { - } - public function create(Request $request) { return view('admin.contacts_list.create_edit', [ diff --git a/flexiapi/app/Http/Controllers/Admin/ExternalAccountController.php b/flexiapi/app/Http/Controllers/Admin/ExternalAccountController.php index 67502dc..86afb4a 100644 --- a/flexiapi/app/Http/Controllers/Admin/ExternalAccountController.php +++ b/flexiapi/app/Http/Controllers/Admin/ExternalAccountController.php @@ -76,7 +76,7 @@ class ExternalAccountController extends Controller $externalAccount->save(); - return redirect()->route('admin.account.external.show', $account->id); + return redirect()->route('admin.account.show', $account->id); } public function delete(int $accountId) @@ -93,6 +93,6 @@ class ExternalAccountController extends Controller $account = Account::findOrFail($accountId); $account->external->delete(); - return redirect()->route('admin.account.external.show', $account->id); + return redirect()->route('admin.account.show', $account->id); } } diff --git a/flexiapi/app/Http/Controllers/Admin/ProvisioningEmailController.php b/flexiapi/app/Http/Controllers/Admin/ProvisioningEmailController.php new file mode 100644 index 0000000..7fe0423 --- /dev/null +++ b/flexiapi/app/Http/Controllers/Admin/ProvisioningEmailController.php @@ -0,0 +1,37 @@ + $account + ]); + } + + public function send(int $accountId) + { + $account = Account::findOrFail($accountId); + $account->provision(); + + Mail::to($account)->send(new Provisioning($account)); + + Log::channel('events')->info('Web Admin: Sending provisioning email', ['id' => $account->identifier]); + + return redirect()->route('admin.account.show', $account); + } +} diff --git a/flexiapi/app/Http/Controllers/Admin/ResetPasswordEmailController.php b/flexiapi/app/Http/Controllers/Admin/ResetPasswordEmailController.php index ac56aba..953f7d0 100644 --- a/flexiapi/app/Http/Controllers/Admin/ResetPasswordEmailController.php +++ b/flexiapi/app/Http/Controllers/Admin/ResetPasswordEmailController.php @@ -6,6 +6,7 @@ use App\Account; use App\ResetPasswordEmailToken; use App\Http\Controllers\Controller; use App\Mail\ResetPassword; + use Illuminate\Support\Str; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; diff --git a/flexiapi/app/Mail/Provisioning.php b/flexiapi/app/Mail/Provisioning.php new file mode 100644 index 0000000..85cc247 --- /dev/null +++ b/flexiapi/app/Mail/Provisioning.php @@ -0,0 +1,41 @@ +account = $account; + } + + public function build() + { + return $this->view(view()->exists('mails.provisioning_custom') + ? 'mails.provisioning_custom' + : 'mails.provisioning') + ->text(view()->exists('mails.provisioning_text_custom') + ? 'mails.provisioning_text_custom' + : 'mails.provisioning_text') + ->with([ + 'provisioning_link' => route('provisioning.provision', [ + 'provisioning_token' => $this->account->provisioning_token, + 'reset_password' => true + ]), + 'provisioning_qrcode' => route('provisioning.qrcode', [ + 'provisioning_token' => $this->account->provisioning_token, + 'reset_password' => true + ]) + ]); + } +} diff --git a/flexiapi/composer.lock b/flexiapi/composer.lock index 633b1d6..f81e64f 100644 --- a/flexiapi/composer.lock +++ b/flexiapi/composer.lock @@ -582,26 +582,29 @@ }, { "name": "doctrine/deprecations", - "version": "1.1.4", + "version": "1.1.5", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", - "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" + }, "require-dev": { - "doctrine/coding-standard": "^9 || ^12", - "phpstan/phpstan": "1.4.10 || 2.0.3", + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", "phpstan/phpstan-phpunit": "^1.0 || ^2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", "psr/log": "^1 || ^2 || ^3" }, "suggest": { @@ -621,9 +624,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.4" + "source": "https://github.com/doctrine/deprecations/tree/1.1.5" }, - "time": "2024-12-07T21:18:45+00:00" + "time": "2025-04-07T20:06:18+00:00" }, { "name": "doctrine/event-manager", @@ -1321,16 +1324,16 @@ }, { "name": "giggsey/libphonenumber-for-php-lite", - "version": "9.0.2", + "version": "9.0.3", "source": { "type": "git", "url": "https://github.com/giggsey/libphonenumber-for-php-lite.git", - "reference": "124cd8095f49df71a52b920f9e50d63e5efd6a14" + "reference": "e4f4c5834d35773bf9d5e72e3e764cfe4e301a8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/124cd8095f49df71a52b920f9e50d63e5efd6a14", - "reference": "124cd8095f49df71a52b920f9e50d63e5efd6a14", + "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/e4f4c5834d35773bf9d5e72e3e764cfe4e301a8c", + "reference": "e4f4c5834d35773bf9d5e72e3e764cfe4e301a8c", "shasum": "" }, "require": { @@ -1395,7 +1398,7 @@ "issues": "https://github.com/giggsey/libphonenumber-for-php-lite/issues", "source": "https://github.com/giggsey/libphonenumber-for-php-lite" }, - "time": "2025-03-28T09:51:47+00:00" + "time": "2025-04-11T07:36:14+00:00" }, { "name": "graham-campbell/result-type", @@ -2402,16 +2405,16 @@ }, { "name": "league/commonmark", - "version": "2.6.1", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "d990688c91cedfb69753ffc2512727ec646df2ad" + "reference": "06c3b0bf2540338094575612f4a1778d0d2d5e94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d990688c91cedfb69753ffc2512727ec646df2ad", - "reference": "d990688c91cedfb69753ffc2512727ec646df2ad", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/06c3b0bf2540338094575612f4a1778d0d2d5e94", + "reference": "06c3b0bf2540338094575612f4a1778d0d2d5e94", "shasum": "" }, "require": { @@ -2505,7 +2508,7 @@ "type": "tidelift" } ], - "time": "2024-12-29T14:10:59+00:00" + "time": "2025-04-18T21:09:27+00:00" }, { "name": "league/config", @@ -5726,16 +5729,16 @@ }, { "name": "sabre/vobject", - "version": "4.5.6", + "version": "4.5.7", "source": { "type": "git", "url": "https://github.com/sabre-io/vobject.git", - "reference": "900266bb3bd448a9f7f41f82344ad0aba237cb27" + "reference": "ff22611a53782e90c97be0d0bc4a5f98a5c0a12c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/vobject/zipball/900266bb3bd448a9f7f41f82344ad0aba237cb27", - "reference": "900266bb3bd448a9f7f41f82344ad0aba237cb27", + "url": "https://api.github.com/repos/sabre-io/vobject/zipball/ff22611a53782e90c97be0d0bc4a5f98a5c0a12c", + "reference": "ff22611a53782e90c97be0d0bc4a5f98a5c0a12c", "shasum": "" }, "require": { @@ -5745,7 +5748,7 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "~2.17.1", - "phpstan/phpstan": "^0.12 || ^1.11", + "phpstan/phpstan": "^0.12 || ^1.12 || ^2.0", "phpunit/php-invoker": "^2.0 || ^3.1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6" }, @@ -5826,7 +5829,7 @@ "issues": "https://github.com/sabre-io/vobject/issues", "source": "https://github.com/fruux/sabre-vobject" }, - "time": "2024-10-14T11:53:54+00:00" + "time": "2025-04-17T09:22:48+00:00" }, { "name": "sabre/xml", @@ -9888,16 +9891,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.12.0", + "version": "3.12.2", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630" + "reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/2d1b63db139c3c6ea0c927698e5160f8b3b8d630", - "reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", + "reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", "shasum": "" }, "require": { @@ -9968,7 +9971,7 @@ "type": "thanks_dev" } ], - "time": "2025-03-18T05:04:51+00:00" + "time": "2025-04-13T04:10:18+00:00" }, { "name": "symfony/config", diff --git a/flexiapi/lang/fr.json b/flexiapi/lang/fr.json index ce903a5..92ecb23 100644 --- a/flexiapi/lang/fr.json +++ b/flexiapi/lang/fr.json @@ -16,6 +16,7 @@ "Activity expiration delay": "Délais d'expiration après activité", "Add contact": "Ajout d'un contact", "Add contacts": "Ajouter des contacts", + "Add existing contacts lists to display them in the user applications.": "Ajouter des listes de contacts existantes afin qu’elles soient visibles dans les applications de l’utilisateur.", "Add": "Ajouter", "Admin": "Administrateur", "Administration": "Administration", @@ -23,6 +24,7 @@ "Allow a custom CSS theme": "Autoriser un thème CSS personnalisé", "Allow client settings to be overwritten by the provisioning ones": "Écraser la configuration client avec celle du provisionnement", "An email will be sent to :email with a unique link allowing the user to reset its password.": "Un email sera envoyé à :email avec un lien unique l'invitant à réinitialiser son mot de passe", + "An email will be sent to :email with a QR Code and provisioning link.": "Un email sera envoyé à :email contenant un QR Code et un lien de provisionnement.", "An email will be sent to this email when someone join the newsletter": "Un email sera envoyé à cette addresse quand quelqu'un rejoint la liste de diffusion", "App Configuration": "Configuration de l'App", "Api Keys": "Clefs d'API", @@ -154,6 +156,7 @@ "Select a domain": "Sélectionner un domaine", "Select a file": "Choisir un fichier", "Send an email to the user to reset the password": "Envoyer un email à l'utilisateur pour réinitialiser son mot de passe", + "Send an email to the user with provisioning information": "Envoyer un email à l'utilisateur avec les informations de provisionnement", "Send": "Envoyer", "Settings": "Paramètres", "Sip Adress": "Adresse SIP", diff --git a/flexiapi/public/css/form.css b/flexiapi/public/css/form.css index 12474ac..42d842f 100644 --- a/flexiapi/public/css/form.css +++ b/flexiapi/public/css/form.css @@ -31,6 +31,7 @@ p .btn { .oppose { float: right; text-align: right; + margin-left: 1rem; } p .btn.oppose { @@ -56,33 +57,33 @@ p .btn.oppose { border-color: var(--main-7); } -.btn.btn-secondary { +.btn.secondary { background-color: transparent; color: var(--main-5); } -.btn.btn-secondary:hover { +.btn.secondary:hover { background-color: var(--main-1); } -.btn.btn-secondary:active { +.btn.secondary:active { background-color: var(--main-5); border-color: var(--main-5); color: white; } -.btn.btn-tertiary { +.btn.tertiary { background-color: var(--main-1); border-color: var(--main-1); color: var(--main-5); } -.btn.btn-tertiary:hover { +.btn.tertiary:hover { background-color: var(--main-2); border-color: var(--main-2); } -.btn.btn-tertiary:active { +.btn.tertiary:active { background-color: var(--main-3); border-color: var(--main-3); } diff --git a/flexiapi/public/css/style.css b/flexiapi/public/css/style.css index 3520633..0bd4193 100644 --- a/flexiapi/public/css/style.css +++ b/flexiapi/public/css/style.css @@ -137,11 +137,11 @@ p { margin-bottom: 1rem; } -p b { +p > b { font-weight: bold; } -p i { +p > i { vertical-align: middle; margin-right: 1rem; } @@ -369,7 +369,11 @@ form section { .grid { display: grid; grid-template-columns: repeat(2, 1fr); - gap: 1rem; + gap: 1.5rem; +} + +.grid .card { + margin: 0; } .grid.third { @@ -396,6 +400,10 @@ form section { grid-column: span 3; } +.grid.third .mid { + grid-column: span 2; +} + content section header { display: flex; gap: 1rem; @@ -433,8 +441,7 @@ content>nav { background-color: var(--main-5); width: 20rem; margin-left: 0; - padding: 1.5rem; - padding-left: 1rem; + padding: 5rem 1.5rem; padding-bottom: 10rem; border-radius: 0 3rem 0 0; background-size: auto 10rem; @@ -564,7 +571,7 @@ h3 { border-bottom: 1px solid var(--grey-2); } -h3 i { +h3 > i { line-height: 2rem; margin-right: 1rem; vertical-align: middle; @@ -651,6 +658,10 @@ table { width: 100%; } +h3 + table { + margin-top: -0.5rem; +} + table tr td a { display: inline-block; } @@ -660,8 +671,29 @@ table tr th { width: 20rem; padding: 1rem; font-size: 1.5rem; + vertical-align: middle; } +table tr td form { + display: block; +} + +.card table tr td:first-child, +.card table tr th:first-child { + padding-left: 0; +} + +table tr:not(.empty) th.actions, +table tr:not(.empty) td.actions { + text-align: right; +} + +.card table tr:not(.empty) th.actions, +.card table tr:not(.empty) td.actions { + padding-right: 0; +} + + table tr th { padding: 0 1rem; line-height: 4rem; @@ -672,7 +704,10 @@ table tr th { table tr td.line, table tr th.line { - max-width: 100%; + max-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } table tr th, @@ -846,7 +881,7 @@ select.list_toggle { } .disabled { - opacity: 0.5; + opacity: 0.3; pointer-events: none; } diff --git a/flexiapi/resources/views/account/delete.blade.php b/flexiapi/resources/views/account/delete.blade.php index a4f8dd6..919156a 100644 --- a/flexiapi/resources/views/account/delete.blade.php +++ b/flexiapi/resources/views/account/delete.blade.php @@ -8,7 +8,7 @@

trash Delete my account

- {{ __('Cancel') }} + {{ __('Cancel') }}
diff --git a/flexiapi/resources/views/account/email/validate.blade.php b/flexiapi/resources/views/account/email/validate.blade.php index 3fa8cec..94e40bf 100644 --- a/flexiapi/resources/views/account/email/validate.blade.php +++ b/flexiapi/resources/views/account/email/validate.blade.php @@ -29,7 +29,7 @@

You didn't receive the code? - Resend a code + Resend a code

diff --git a/flexiapi/resources/views/account/login.blade.php b/flexiapi/resources/views/account/login.blade.php index dbcad4a..309f8fc 100644 --- a/flexiapi/resources/views/account/login.blade.php +++ b/flexiapi/resources/views/account/login.blade.php @@ -43,7 +43,7 @@

{{ __('No account yet?') }} - {{ __('Register') }} + {{ __('Register') }}

@endif diff --git a/flexiapi/resources/views/account/password.blade.php b/flexiapi/resources/views/account/password.blade.php index 87079a9..b0e8aab 100644 --- a/flexiapi/resources/views/account/password.blade.php +++ b/flexiapi/resources/views/account/password.blade.php @@ -12,7 +12,7 @@

lock {{ __('Create') }}

@endif - {{ __('Cancel') }} + {{ __('Cancel') }} diff --git a/flexiapi/resources/views/account/phone/validate.blade.php b/flexiapi/resources/views/account/phone/validate.blade.php index 168d581..629c506 100644 --- a/flexiapi/resources/views/account/phone/validate.blade.php +++ b/flexiapi/resources/views/account/phone/validate.blade.php @@ -29,7 +29,7 @@

{{ __("You didn't receive the code?"") }} - {{ __('Resend') }} + {{ __('Resend') }}

diff --git a/flexiapi/resources/views/account/register/email.blade.php b/flexiapi/resources/views/account/register/email.blade.php index 98a328e..7d49e88 100644 --- a/flexiapi/resources/views/account/register/email.blade.php +++ b/flexiapi/resources/views/account/register/email.blade.php @@ -5,7 +5,7 @@

user-circle {{ __('Register') }}

{{ __('You already have an account?') }} - {{ __('Login') }} + {{ __('Login') }}

@include('parts.tabs.register') diff --git a/flexiapi/resources/views/account/register/phone.blade.php b/flexiapi/resources/views/account/register/phone.blade.php index 72e3b61..a00a6a4 100644 --- a/flexiapi/resources/views/account/register/phone.blade.php +++ b/flexiapi/resources/views/account/register/phone.blade.php @@ -5,7 +5,7 @@

user-circle {{ __('Register') }}

{{ __('You already have an account?') }} - {{ __('Login') }} + {{ __('Login') }}

@include('parts.tabs.register') diff --git a/flexiapi/resources/views/admin/account/account_type/create.blade.php b/flexiapi/resources/views/admin/account/account_type/create.blade.php index dc8db82..7e4a319 100644 --- a/flexiapi/resources/views/admin/account/account_type/create.blade.php +++ b/flexiapi/resources/views/admin/account/account_type/create.blade.php @@ -2,7 +2,7 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) diff --git a/flexiapi/resources/views/admin/account/action/create_edit.blade.php b/flexiapi/resources/views/admin/account/action/create_edit.blade.php index 972df7a..913636f 100644 --- a/flexiapi/resources/views/admin/account/action/create_edit.blade.php +++ b/flexiapi/resources/views/admin/account/action/create_edit.blade.php @@ -2,7 +2,7 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) diff --git a/flexiapi/resources/views/admin/account/action/delete.blade.php b/flexiapi/resources/views/admin/account/action/delete.blade.php index 3447fe2..1fd781d 100644 --- a/flexiapi/resources/views/admin/account/action/delete.blade.php +++ b/flexiapi/resources/views/admin/account/action/delete.blade.php @@ -2,7 +2,7 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) diff --git a/flexiapi/resources/views/admin/account/activity/index.blade.php b/flexiapi/resources/views/admin/account/activity/index.blade.php index e493d12..6908d72 100644 --- a/flexiapi/resources/views/admin/account/activity/index.blade.php +++ b/flexiapi/resources/views/admin/account/activity/index.blade.php @@ -2,7 +2,7 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) @endsection @@ -14,220 +14,233 @@ @include('admin.account.parts.tabs') -@if ($account->apiKey) -

Api Key

- - - - - - - - - - - - - - - - - - - -
{{ __('Code') }}{{ __('Created') }}{{ __('Used on') }}IP{{ __('Requests') }}
- {{ $account->apiKey->key }} - - {{ $account->apiKey->created_at }} - - {{ $account->apiKey->last_used_at }} - - {{ $account->apiKey->ip ?? '*' }} - - {{ $account->apiKey->requests }} -
-@endif +
+ @if ($account->apiKey) +
+

Api Key

+ + + + + + + + + + + + + +
{{ __('Created') }}Key
+ {{ $account->apiKey->created_at }} + + {{ __('Used on') }}: {{ $account->apiKey->last_used_at }} + + + {{ $account->apiKey->key }} + + IP: {{ $account->apiKey->ip ?? '*' }} | + {{ __('Requests') }}: {{ $account->apiKey->requests }} + +
+
+ @endif -@if ($account->accountCreationToken) -

Account Creation Token

- - - - - - - - - - - accountCreationToken->offed()) class="disabled crossed" @endif> - - - - - - -
{{ __('Code') }}{{ __('Created') }}{{ __('Used on') }}IP
**** - {{ $account->accountCreationToken->created_at }} - - {{ $account->accountCreationToken->created_at != $account->accountCreationToken->updated_at ? $account->accountCreationToken->updated_at : '-' }} - - {{ $account->accountCreationToken->ip ? $account->accountCreationToken->ip : '-' }} -
-@endif + @if ($account->accountCreationToken) +
+

Account Creation Token

+ + + + + + + + + + + + + +
{{ __('Created') }}{{ __('Used on') }}
+ {{ $account->accountCreationToken->created_at }} + {{ $account->accountCreationToken->created_at ?? '-' }} + + {{ $account->accountCreationToken->created_at != $account->accountCreationToken->updated_at ? $account->accountCreationToken->updated_at : '-' }} + + {{ \Illuminate\Support\Str::limit($account->accountCreationToken->user_agent, 20, $end='...') }} + +
+
+ @endif -@if ($account->recoveryCodes->isNotEmpty()) -

Recovery Codes

- - - - - - - - - - - @foreach ($account->recoveryCodes as $key => $recoveryCode) - offed() || $key > 0) class="disabled crossed" @endif> - - - - + @if ($account->recoveryCodes->isNotEmpty()) +
+

Recovery Codes

+
{{ __('Code') }}{{ __('Created') }}{{ __('Used on') }}IP
**** - {{ $recoveryCode->created_at }} - - {{ $recoveryCode->created_at != $recoveryCode->updated_at ? $recoveryCode->updated_at : '-' }} - - {{ $recoveryCode->ip ? $recoveryCode->ip : '-' }} -
+ + + + + + + + @foreach ($account->recoveryCodes as $key => $recoveryCode) + + + + + @endforeach + +
{{ __('Created') }}{{ __('Used on') }}
+ {{ $recoveryCode->created_at }} + + {{ $recoveryCode->created_at != $recoveryCode->updated_at ? $recoveryCode->updated_at : '-' }} + + IP: {{ $recoveryCode->ip ?? '-' }} | + {{ \Illuminate\Support\Str::limit($recoveryCode->user_agent, 20, $end='...') }} + +
+
+ @endif + + @if ($account->phoneChangeCodes->isNotEmpty()) +
+

Phone Change requests

+ + + + + + - @endforeach - -
{{ __('Created') }}{{ __('Phone number') }}{{ __('Used on') }}
-@endif + + + @foreach ($account->phoneChangeCodes as $key => $phoneChangeCode) + + + {{ $phoneChangeCode->created_at }} + + + {{ $phoneChangeCode->phone }} + {{ __('Code') }}: {{ $phoneChangeCode->code ?? '-' }} + + + {{ $phoneChangeCode->created_at != $phoneChangeCode->updated_at ? $phoneChangeCode->updated_at : '-' }} + + IP: {{ $phoneChangeCode->ip ?? '-' }} | + {{ \Illuminate\Support\Str::limit($phoneChangeCode->user_agent, 20, $end='...') }} + + + + @endforeach + + +
+ @endif -@if ($account->phoneChangeCodes->isNotEmpty()) -

Phone Change requests

- - - - - - - - - - - - @foreach ($account->phoneChangeCodes as $key => $phoneChangeCode) - offed() || $key > 0) class="disabled crossed" @endif> - - - - - - - @endforeach - -
{{ __('Phone number') }}{{ __('Code') }}{{ __('Created') }}{{ __('Used on') }}IP
{{ $phoneChangeCode->phone }}{{ $phoneChangeCode->code ?? '-' }} - {{ $phoneChangeCode->created_at }} - - {{ $phoneChangeCode->created_at != $phoneChangeCode->updated_at ? $phoneChangeCode->updated_at : '-' }} - - {{ $phoneChangeCode->ip ? $phoneChangeCode->ip : '-' }} -
-@endif + @if ($account->emailChangeCodes->isNotEmpty()) +
+

Email Change requests

+ + + + + + + + + + @foreach ($account->emailChangeCodes as $key => $emailChangeCode) + + + + + + @endforeach + +
{{ __('Created') }}{{ __('Email') }}{{ __('Used on') }}
+ {{ $emailChangeCode->created_at }} + + {{ $emailChangeCode->email }} + {{ __('Code') }}: {{ $emailChangeCode->code ?? '-' }} + + {{ $emailChangeCode->created_at != $emailChangeCode->updated_at ? $emailChangeCode->updated_at : '-' }} + + IP: {{ $emailChangeCode->ip ?? '-' }} | + {{ \Illuminate\Support\Str::limit($emailChangeCode->user_agent, 20, $end='...') }} + +
+
+ @endif -@if ($account->emailChangeCodes->isNotEmpty()) -

Email Change requests

- - - - - - - - - - - - @foreach ($account->emailChangeCodes as $key => $emailChangeCode) - offed() || $key > 0) class="disabled crossed" @endif> - - - - - - - @endforeach - -
{{ __('Email') }}{{ __('Code') }}{{ __('Created') }}{{ __('Used on') }}IP
{{ $emailChangeCode->email }}{{ $emailChangeCode->code ?? '-' }} - {{ $emailChangeCode->created_at }} - - {{ $emailChangeCode->created_at != $emailChangeCode->updated_at ? $emailChangeCode->updated_at : '-' }} - - {{ $emailChangeCode->ip ? $emailChangeCode->ip : '-' }} -
-@endif + @if ($account->provisioningTokens->isNotEmpty()) +
+

{{ __('Provisioning tokens') }}

+ + + + + + + + + @foreach ($account->provisioningTokens as $key => $provisioningToken) + + + + + @endforeach + +
{{ __('Created') }}{{ __('Used on') }}
+ {{ $provisioningToken->created_at }} + + {{ $provisioningToken->consumed() ? $provisioningToken->updated_at : '-' }} + + IP: {{ $provisioningToken->ip ?? '-' }} | + {{ \Illuminate\Support\Str::limit($provisioningToken->user_agent, 20, $end='...') }} + +
+
+ @endif -@if ($account->provisioningTokens->isNotEmpty()) -

{{ __('Provisioning tokens') }}

- - - - - - - - - - - @foreach ($account->provisioningTokens as $key => $provisioningToken) - offed() || $key > 0) class="disabled crossed" @endif> - - - - - - @endforeach - -
Token{{ __('Created') }}{{ __('Used on') }}IP
{{ $provisioningToken->token }} - {{ $provisioningToken->created_at }} - - {{ $provisioningToken->consumed() ? $provisioningToken->updated_at : '-' }} - - {{ $provisioningToken->ip ? $provisioningToken->ip : '-' }} -
-@endif + @if ($account->resetPasswordEmailTokens->isNotEmpty()) +
+

{{ __('Reset password emails') }}

+ + + + + + + + + + @foreach ($account->resetPasswordEmailTokens as $key => $resetPasswordEmailToken) + + + + + + @endforeach + +
{{ __('Created') }}{{ __('Email') }}{{ __('Used on') }}
+ {{ $resetPasswordEmailToken->created_at }} + + {{ $resetPasswordEmailToken->email }} + + {{ $resetPasswordEmailToken->token }} + + + {{ $resetPasswordEmailToken->consumed() ? $resetPasswordEmailToken->updated_at : '-' }} + + IP: {{ $resetPasswordEmailToken->ip ?? '-' }} | + {{ $resetPasswordEmailToken->user_agent ? \Illuminate\Support\Str::limit($resetPasswordEmailToken->user_agent, 20, $end='...') : '-' }} + +
+
+ @endif -@if ($account->resetPasswordEmailTokens->isNotEmpty()) -

{{ __('Reset password emails') }}

- - - - - - - - - - - @foreach ($account->resetPasswordEmailTokens as $key => $resetPasswordEmailToken) - offed() || $key > 0) class="disabled crossed" @endif> - - - - - - @endforeach - -
Token{{ __('Created') }}{{ __('Used on') }}{{ __('Email') }}
{{ $resetPasswordEmailToken->token }} - {{ $resetPasswordEmailToken->created_at }} - - {{ $resetPasswordEmailToken->consumed() ? $resetPasswordEmailToken->updated_at : '-' }} - - {{ $resetPasswordEmailToken->email }} -
-@endif + @endsection \ No newline at end of file diff --git a/flexiapi/resources/views/admin/account/contact/create.blade.php b/flexiapi/resources/views/admin/account/contact/create.blade.php index 49819d4..c01a055 100644 --- a/flexiapi/resources/views/admin/account/contact/create.blade.php +++ b/flexiapi/resources/views/admin/account/contact/create.blade.php @@ -2,14 +2,14 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) @endsection @section('content')

user-plus {{ __('Add contact') }}

- {{ __('Cancel') }} + {{ __('Cancel') }}
diff --git a/flexiapi/resources/views/admin/account/contact/delete.blade.php b/flexiapi/resources/views/admin/account/contact/delete.blade.php index 774083e..151595a 100644 --- a/flexiapi/resources/views/admin/account/contact/delete.blade.php +++ b/flexiapi/resources/views/admin/account/contact/delete.blade.php @@ -2,7 +2,7 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) diff --git a/flexiapi/resources/views/admin/account/contact/index.blade.php b/flexiapi/resources/views/admin/account/contact/index.blade.php new file mode 100644 index 0000000..0775ae0 --- /dev/null +++ b/flexiapi/resources/views/admin/account/contact/index.blade.php @@ -0,0 +1,97 @@ +@extends('layouts.main') + +@section('breadcrumb') + @include('admin.account.parts.breadcrumb_accounts_index') + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) + +@endsection + +@section('content') +
+

users {{ $account->identifier }}

+
+ @include('admin.account.parts.tabs') + + + plus {{ __('Add') }} + +

+ {{ __('Contacts') }} +

+ + + @if ($account->contacts->isEmpty()) + + + + @else + @foreach ($account->contacts as $contact) + + + + + @endforeach + @endif + +
{{ __('Empty') }}
+ {{ $contact->identifier }} + + + trash + +
+ +
+ +

{{ __('Contacts Lists') }}

+ + + + @foreach ($account->contactsLists as $contactsList) + + + + + @endforeach + +
+ {{ $contactsList->title }} + {{ $contactsList->contacts_count }} {{ __('Contacts') }} + + + trash + +
+ + @if ($contacts_lists->isNotEmpty()) +
+
+
+

plus {{ __('Add') }}

+

{{ __('Add existing contacts lists to display them in the user applications.') }}

+
+
+ + @csrf + @method('post') + +
+ +
+ +
+
+
+ @endif +@endsection \ No newline at end of file diff --git a/flexiapi/resources/views/admin/account/create_edit.blade.php b/flexiapi/resources/views/admin/account/create_edit.blade.php index b294074..9fd29bf 100644 --- a/flexiapi/resources/views/admin/account/create_edit.blade.php +++ b/flexiapi/resources/views/admin/account/create_edit.blade.php @@ -3,7 +3,8 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') @if ($account->id) - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) + @else @endif @@ -13,10 +14,6 @@ @if ($account->id)

users {{ $account->identifier }}

- - trash - {{ __('Delete') }} -
@if ($account->updated_at)

{{ __('Updated on') }} {{ $account->updated_at->format('d/m/Y') }} @@ -25,7 +22,7 @@ @else

users {{ __('Create') }}

- {{ __('Cancel') }} + {{ __('Cancel') }}
@endif @@ -80,14 +77,6 @@ value="@if($account->id){{ $account->email }}@else{{ old('email') }}@endif"> @include('parts.errors', ['name' => __('email')]) - - @if (!empty($account->email)) -

- - {{ __('Send an email to the user to reset the password') }} - -

- @endif
@@ -130,130 +119,4 @@ @endif
- -
- - @if ($account->id) -

{{ __('Contacts') }}

- - @foreach ($account->contacts as $contact) -

- {{ $contact->identifier }} - - x - -

- @endforeach - - {{ __('Add') }} - -

{{ __('Contacts Lists') }}

- - @if ($contacts_lists->isNotEmpty()) -
- @csrf - @method('post') - -
- - -
-
-
- @endif - - @foreach ($account->contactsLists as $contactsList) -

- {{ $contactsList->title }} - - x - -

- @endforeach - -
- -

{{ __('Provisioning') }}

- - @if ($account->provisioning_token) -
- -
- -
-
- - {{ __('The link can only be visited once') }} -
-
- {{ __('Renew') }} -
-
- @else - {{ __('Create') }} - @endif - - @if (space()?->intercom_features)) -

{{ __('Actions') }}

- - @if ($account->dtmf_protocol) - - - @foreach ($account->actions as $action) - - - - - - @endforeach - -
{{ $action->key }}{{ $action->code }} - {{ __('Edit') }} - {{ __('Delete') }} -
- - {{ __('Add') }} - @else -

To manage actions, you must configure the DTMF protocol in the account settings.

- @endif - -

{{ __('Types') }}

- - - - @foreach ($account->types as $type) - - - - - @endforeach - -
{{ $type->key }} -
- @csrf - @method('delete') - -
-
- - {{ __('Add') }} - @endif - @endif @endsection diff --git a/flexiapi/resources/views/admin/account/delete.blade.php b/flexiapi/resources/views/admin/account/delete.blade.php index d0195ad..e77190e 100644 --- a/flexiapi/resources/views/admin/account/delete.blade.php +++ b/flexiapi/resources/views/admin/account/delete.blade.php @@ -2,7 +2,7 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) @endsection @@ -10,7 +10,7 @@

trash {{ __('Delete') }}

- {{ __('Cancel') }} + {{ __('Cancel') }}
diff --git a/flexiapi/resources/views/admin/account/device/delete.blade.php b/flexiapi/resources/views/admin/account/device/delete.blade.php index 7e5986d..b8514b8 100644 --- a/flexiapi/resources/views/admin/account/device/delete.blade.php +++ b/flexiapi/resources/views/admin/account/device/delete.blade.php @@ -2,7 +2,7 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) diff --git a/flexiapi/resources/views/admin/account/device/index.blade.php b/flexiapi/resources/views/admin/account/device/index.blade.php deleted file mode 100644 index c4683a4..0000000 --- a/flexiapi/resources/views/admin/account/device/index.blade.php +++ /dev/null @@ -1,46 +0,0 @@ -@extends('layouts.main') - -@section('breadcrumb') - @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) - -@endsection - -@section('content') - -
-

users {{ $account->identifier }}

-
- -@include('admin.account.parts.tabs') - - - - - - - - - - @if ($devices->isEmpty()) - - - - @else - @foreach ($devices as $device) - - - - - @endforeach - @endif - -
User Agent
{{ __('Empty') }}
{{ $device->user_agent }} - - {{ __('Delete') }} - -
- -@endsection \ No newline at end of file diff --git a/flexiapi/resources/views/admin/account/dictionary/create_edit.blade.php b/flexiapi/resources/views/admin/account/dictionary/create_edit.blade.php index 6aa3ebb..992e907 100644 --- a/flexiapi/resources/views/admin/account/dictionary/create_edit.blade.php +++ b/flexiapi/resources/views/admin/account/dictionary/create_edit.blade.php @@ -2,11 +2,8 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) - - + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) + @endsection @section('content') diff --git a/flexiapi/resources/views/admin/account/dictionary/delete.blade.php b/flexiapi/resources/views/admin/account/dictionary/delete.blade.php index 55d8450..2fcae0d 100644 --- a/flexiapi/resources/views/admin/account/dictionary/delete.blade.php +++ b/flexiapi/resources/views/admin/account/dictionary/delete.blade.php @@ -2,11 +2,8 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) - - + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) + @endsection @section('content') diff --git a/flexiapi/resources/views/admin/account/dictionary/index.blade.php b/flexiapi/resources/views/admin/account/dictionary/index.blade.php deleted file mode 100644 index 2270874..0000000 --- a/flexiapi/resources/views/admin/account/dictionary/index.blade.php +++ /dev/null @@ -1,56 +0,0 @@ -@extends('layouts.main') - -@section('breadcrumb') - @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) - -@endsection - -@section('content') - -
-

users {{ $account->identifier }}

- - plus - {{ __('Add') }} - -
- -@include('admin.account.parts.tabs') - - - - - - - - - - - @if ($account->dictionaryEntries->isEmpty()) - - - - @endif - @foreach ($account->dictionaryEntries as $dictionaryEntry) - - - - - - @endforeach - -
{{ __('Key') }}{{ __('Value') }}
{{ __('Empty') }}
{{ $dictionaryEntry->key }}{{ $dictionaryEntry->value }} - - {{ __('Edit') }} - - - {{ __('Delete') }} - -
- -@endsection \ No newline at end of file diff --git a/flexiapi/resources/views/admin/account/external/delete.blade.php b/flexiapi/resources/views/admin/account/external/delete.blade.php index 5be13da..8d1842d 100644 --- a/flexiapi/resources/views/admin/account/external/delete.blade.php +++ b/flexiapi/resources/views/admin/account/external/delete.blade.php @@ -2,7 +2,7 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) @endsection @@ -11,7 +11,7 @@

trash {{ __('Delete') }}

- {{ __('Cancel') }} + {{ __('Cancel') }}
diff --git a/flexiapi/resources/views/admin/account/external/show.blade.php b/flexiapi/resources/views/admin/account/external/show.blade.php index 95fe79f..98f568c 100644 --- a/flexiapi/resources/views/admin/account/external/show.blade.php +++ b/flexiapi/resources/views/admin/account/external/show.blade.php @@ -2,7 +2,7 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) @endsection @@ -10,7 +10,7 @@

user-circle-dashed {{ __('External Account') }}

@if($externalAccount->id) - + trash {{ __('Delete') }} diff --git a/flexiapi/resources/views/admin/account/import/check.blade.php b/flexiapi/resources/views/admin/account/import/check.blade.php index 3431bcc..06dca34 100644 --- a/flexiapi/resources/views/admin/account/import/check.blade.php +++ b/flexiapi/resources/views/admin/account/import/check.blade.php @@ -8,9 +8,9 @@ @section('content')

users {{ __('Import') }}

- {{ __('Cancel') }} + {{ __('Cancel') }} - Previous + Previous @csrf diff --git a/flexiapi/resources/views/admin/account/import/create.blade.php b/flexiapi/resources/views/admin/account/import/create.blade.php index 65de0d3..2cc7cea 100644 --- a/flexiapi/resources/views/admin/account/import/create.blade.php +++ b/flexiapi/resources/views/admin/account/import/create.blade.php @@ -8,7 +8,7 @@ @section('content')

users {{ __('Import') }}

- {{ __('Cancel') }} + {{ __('Cancel') }}
diff --git a/flexiapi/resources/views/admin/account/index.blade.php b/flexiapi/resources/views/admin/account/index.blade.php index eab0e72..1a6a1e1 100644 --- a/flexiapi/resources/views/admin/account/index.blade.php +++ b/flexiapi/resources/views/admin/account/index.blade.php @@ -6,12 +6,12 @@ @if ($space)

{{ $accounts->count()}} / @if ($space->max_accounts > 0){{ $space->max_accounts }} @else infinity@endif

@endif - + download-simple {{ __('Import') }} @if (space()?->intercom_features) - + shapes {{ __('Types') }} @@ -52,7 +52,7 @@
- {{ __('Reset') }} + {{ __('Reset') }}
@@ -62,7 +62,7 @@ @include('parts.column_sort', ['key' => 'username', 'title' => __('Identifier')]) - {{ __('Contacts Lists') }} + @include('parts.column_sort', ['key' => 'updated_at', 'title' => __('Updated')]) @@ -74,29 +74,13 @@ @endif @foreach ($accounts as $account) - - + + {{ $account->identifier }} - @if ($account->activated) - check - @endif - @if ($account->superAdmin) - Super Adm. - @elseif ($account->admin) - Adm. - @endif - @if ($account->blocked) - prohibit - @endif - @if ($account->contactsLists->isNotEmpty()) - {{ $account->contactsLists->first()->title }} - @if ($account->contactsLists->count() > 1) - +{{ $account->contactsLists->count() - 1 }} - @endif - @endif + @include('admin.account.parts.badges', ['account' => $account]) {{ $account->updated_at }} diff --git a/flexiapi/resources/views/admin/account/parts/badges.blade.php b/flexiapi/resources/views/admin/account/parts/badges.blade.php new file mode 100644 index 0000000..110c946 --- /dev/null +++ b/flexiapi/resources/views/admin/account/parts/badges.blade.php @@ -0,0 +1,11 @@ +@if ($account->activated) +check +@endif +@if ($account->superAdmin) +Super Adm. +@elseif ($account->admin) +Adm. +@endif +@if ($account->blocked) +prohibit +@endif \ No newline at end of file diff --git a/flexiapi/resources/views/admin/account/parts/breadcrumb_accounts_edit.blade.php b/flexiapi/resources/views/admin/account/parts/breadcrumb_accounts_edit.blade.php deleted file mode 100644 index 2f316c0..0000000 --- a/flexiapi/resources/views/admin/account/parts/breadcrumb_accounts_edit.blade.php +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/flexiapi/resources/views/admin/account/parts/breadcrumb_accounts_show.blade.php b/flexiapi/resources/views/admin/account/parts/breadcrumb_accounts_show.blade.php new file mode 100644 index 0000000..2c73d60 --- /dev/null +++ b/flexiapi/resources/views/admin/account/parts/breadcrumb_accounts_show.blade.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/flexiapi/resources/views/admin/account/parts/tabs.blade.php b/flexiapi/resources/views/admin/account/parts/tabs.blade.php index a05644b..ffff7e6 100644 --- a/flexiapi/resources/views/admin/account/parts/tabs.blade.php +++ b/flexiapi/resources/views/admin/account/parts/tabs.blade.php @@ -1,11 +1,9 @@ @include('parts.tabs', [ 'items' => [ - route('admin.account.edit', $account->id) => __('Information'), - route('admin.account.external.show', $account->id) => __('External Account'), - route('admin.account.statistics.show_call_logs', $account->id) => __('Calls logs'), - route('admin.account.device.index', $account->id) => __('Devices'), - route('admin.account.statistics.show', $account->id) => __('Statistics'), - route('admin.account.activity.index', $account->id) => __('Activity'), - route('admin.account.dictionary.index', $account->id) => __('Dictionary'), + route('admin.account.show', $account) => __('Information'), + route('admin.account.contact.index', $account) => __('Contacts'), + route('admin.account.statistics.show_call_logs', $account) => __('Calls logs'), + route('admin.account.statistics.show', $account) => __('Statistics'), + route('admin.account.activity.index', $account) => __('Activity'), ], ]) \ No newline at end of file diff --git a/flexiapi/resources/views/admin/account/provisioning_email/create.blade.php b/flexiapi/resources/views/admin/account/provisioning_email/create.blade.php new file mode 100644 index 0000000..548d34f --- /dev/null +++ b/flexiapi/resources/views/admin/account/provisioning_email/create.blade.php @@ -0,0 +1,27 @@ +@extends('layouts.main') + +@section('breadcrumb') + @include('admin.account.parts.breadcrumb_accounts_index') + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) + +@endsection + +@section('content') + +
+

envelope {{ __('Reset password') }}

+
+ +

{{ __('An email will be sent to :email with a QR Code and provisioning link.', ['email' => $account->email]) }}

+ +@if (config('app.provisioning_token_expiration_minutes') > 0) +

{{ __('This link will be available for :hours hours', ['hours' => config('app.provisioning_token_expiration_minutes')/60]) }}

+@endif + +

+ + paper-plane-right {{ __('Send') }} + +

+ +@endsection \ No newline at end of file diff --git a/flexiapi/resources/views/admin/account/reset_password_email/create.blade.php b/flexiapi/resources/views/admin/account/reset_password_email/create.blade.php index 2815d0d..a9e86c6 100644 --- a/flexiapi/resources/views/admin/account/reset_password_email/create.blade.php +++ b/flexiapi/resources/views/admin/account/reset_password_email/create.blade.php @@ -2,7 +2,7 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) @endsection @@ -14,10 +14,12 @@

{{ __('An email will be sent to :email with a unique link allowing the user to reset its password.', ['email' => $account->email]) }}

-

{{ __('This link will be available for :hours hours.', ['hours' => config('app.reset_password_email_token_expiration_minutes')/60]) }}

+@if (config('app.reset_password_email_token_expiration_minutes') > 0) +

{{ __('This link will be available for :hours hours', ['hours' => config('app.reset_password_email_token_expiration_minutes')/60]) }}

+@endif

- + paper-plane-right {{ __('Send') }}

diff --git a/flexiapi/resources/views/admin/account/show.blade.php b/flexiapi/resources/views/admin/account/show.blade.php new file mode 100644 index 0000000..93a534d --- /dev/null +++ b/flexiapi/resources/views/admin/account/show.blade.php @@ -0,0 +1,286 @@ +@extends('layouts.main') + +@section('breadcrumb') + @include('admin.account.parts.breadcrumb_accounts_index') + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) +@endsection + +@section('content') +
+

users {{ $account->identifier }}

+
+ @include('admin.account.parts.tabs') + +
+
+ + pencil + {{ __('Edit') }} + +

+ @if ($account->updated_at) + {{ __('Updated on') }} {{ $account->updated_at->format('d/m/Y') }} + @endif + {{ __('Information') }} +

+ +

user {{ __('SIP Adress') }}: sip:{{ $account->identifier }}

+ @if ($account->email) +

envelope {{ __('Email') }}: {{ $account->email }}

+ @endif + @if ($account->phone) +

phone {{ __('Phone') }}: {{ $account->phone }}

+ @endif + @if ($account->passwords()->count() > 0) +

password {{ __('Password') }}: **********

+ @endif +

+ @include('admin.account.parts.badges', ['account' => $account]) +

+
+
+

+ {{ __('Manage') }} +

+ + + email))class="disabled"@endif> + + + + email))class="disabled"@endif> + + + + + + + + +
{{ __('Send an email to the user to reset the password') }} + + paper-plane-right + +
{{ __('Send an email to the user with provisioning information') }} + + paper-plane-right + +
+ {{ __('Delete') }} + + + trash + +
+
+ +
+ + pencil + @if ($account->external){{ __('Edit') }}@else{{ __('Create') }}@endif + +

+ {{ __('External Account') }} +

+ @if ($account->external) + @if ($account->external->username) +

user {{ __('Usernale') }}: {{ $account->external->username }}

+ @endif + @if ($account->external->domain) +

hard-drive {{ __('Domain') }}: {{ $account->external->domain }}

+ @endif + @if ($account->external->password) +

password {{ __('Password') }}: **********

+ @endif + @else +

{{ __('Empty') }}

+ @endif +
+ +
+ + repeat + {{ __('Renew') }} + +

{{ __('Provisioning') }}

+ + @if ($account->provisioning_token) +
+ +
+ +
+
+ + {{ __('The link can only be visited once') }} +
+
+ @else + {{ __('Create') }} + @endif +
+ +
+

+ {{ __('Devices') }} +

+ + + + + + + + + @if ($devices->isEmpty()) + + + + @else + @foreach ($devices as $device) + + + + + @endforeach + @endif + +
User Agent
{{ __('Empty') }}
{{ $device->user_agent }} + + trash + +
+
+ +
+ + plus + {{ __('Add') }} + +

+ {{ __('Dictionary') }} +

+ + + + + + + + + + @if ($account->dictionaryEntries->isEmpty()) + + + + @endif + @foreach ($account->dictionaryEntries as $dictionaryEntry) + + + + + + @endforeach + +
{{ __('Key') }}{{ __('Value') }}
{{ __('Empty') }}
{{ $dictionaryEntry->key }}{{ $dictionaryEntry->value }} + + pencil + + + trash + +
+
+ + @if (space()?->intercom_features) +
+ @if ($account->dtmf_protocol) + + plus{{ __('Add') }} + + @else + + pencil + {{ __('Edit') }} + + @endif +

+ {{ __('Actions') }} + @if ($account->dtmf_protocol) + {{ $account->dtmf_protocol}} + @endif +

+ + @if ($account->dtmf_protocol) + + + @if ($account->actions->isEmpty()) + + + + @endif + @foreach ($account->actions as $action) + + + + + + @endforeach + +
{{ __('Empty') }}
{{ $action->key }}{{ $action->code }} + + pencil + + + trash + +
+ @else +

To manage actions, you must configure the DTMF protocol in the account settings.

+ @endif +
+ +
+ + plus{{ __('Add') }} + + +

{{ __('Types') }}

+ + + + @if ($account->types->isEmpty()) + + + + @endif + @foreach ($account->types as $type) + + + + + @endforeach + +
{{ __('Empty') }}
{{ $type->key }} +
+ @csrf + @method('delete') + +
+
+
+ @endif + +
+@endsection diff --git a/flexiapi/resources/views/admin/account/statistics/show.blade.php b/flexiapi/resources/views/admin/account/statistics/show.blade.php index 7f62c8e..b246aae 100644 --- a/flexiapi/resources/views/admin/account/statistics/show.blade.php +++ b/flexiapi/resources/views/admin/account/statistics/show.blade.php @@ -2,7 +2,7 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) @endsection diff --git a/flexiapi/resources/views/admin/account/statistics/show_call_logs.blade.php b/flexiapi/resources/views/admin/account/statistics/show_call_logs.blade.php index 30878a7..9cca7e7 100644 --- a/flexiapi/resources/views/admin/account/statistics/show_call_logs.blade.php +++ b/flexiapi/resources/views/admin/account/statistics/show_call_logs.blade.php @@ -2,7 +2,7 @@ @section('breadcrumb') @include('admin.account.parts.breadcrumb_accounts_index') - @include('admin.account.parts.breadcrumb_accounts_edit', ['account' => $account]) + @include('admin.account.parts.breadcrumb_accounts_show', ['account' => $account]) @endsection @@ -28,7 +28,7 @@ diff --git a/flexiapi/resources/views/admin/account/type/index.blade.php b/flexiapi/resources/views/admin/account/type/index.blade.php index 846197b..6be77a7 100644 --- a/flexiapi/resources/views/admin/account/type/index.blade.php +++ b/flexiapi/resources/views/admin/account/type/index.blade.php @@ -29,12 +29,12 @@ {{ $type->key }} - - - {{ __('Edit') }} + + + pencil - - {{ __('Delete') }} + + trash diff --git a/flexiapi/resources/views/admin/api_key/create.blade.php b/flexiapi/resources/views/admin/api_key/create.blade.php index 62a8be7..3ec29df 100644 --- a/flexiapi/resources/views/admin/api_key/create.blade.php +++ b/flexiapi/resources/views/admin/api_key/create.blade.php @@ -12,7 +12,7 @@ @section('content')

key {{ __('Create') }}

- {{ __('Cancel') }} + {{ __('Cancel') }}

trash {{ __('Delete') }}

- {{ __('Cancel') }} + {{ __('Cancel') }}
diff --git a/flexiapi/resources/views/admin/api_key/index.blade.php b/flexiapi/resources/views/admin/api_key/index.blade.php index 196e830..7fa4f11 100644 --- a/flexiapi/resources/views/admin/api_key/index.blade.php +++ b/flexiapi/resources/views/admin/api_key/index.blade.php @@ -39,9 +39,9 @@ {{ __('Activity expiration delay') }}: {{ $api_key->expires_after_last_used_minutes ? $api_key->expires_after_last_used_minutes . ' min' : __('Never')}} | {{ __('Last used') }}: {{ $api_key->last_used_at ?? __('Never') }} {{ $api_key->created_at }} - trash + trash - + {{ __('By') }}: {{ $api_key->account->identifier }} diff --git a/flexiapi/resources/views/admin/contacts_list/contacts/add.blade.php b/flexiapi/resources/views/admin/contacts_list/contacts/add.blade.php index 7cef15e..0d15570 100644 --- a/flexiapi/resources/views/admin/contacts_list/contacts/add.blade.php +++ b/flexiapi/resources/views/admin/contacts_list/contacts/add.blade.php @@ -14,7 +14,7 @@

user-rectangle {{ $contacts_list->title }}

- {{ __('Cancel') }} + {{ __('Cancel') }} @@ -38,7 +38,7 @@ @include('admin.account.parts.forms.select_domain')
{{ __('Reset') }} + class="btn secondary">{{ __('Reset') }}
diff --git a/flexiapi/resources/views/admin/contacts_list/create_edit.blade.php b/flexiapi/resources/views/admin/contacts_list/create_edit.blade.php index 18369dc..d3d42cd 100644 --- a/flexiapi/resources/views/admin/contacts_list/create_edit.blade.php +++ b/flexiapi/resources/views/admin/contacts_list/create_edit.blade.php @@ -11,16 +11,14 @@
@if ($contacts_list->id)

user-rectangle {{ $contacts_list->title }}

- {{ __('Cancel') }} - + trash {{ __('Delete') }} @else

user-rectangle {{ __('Create') }}

- {{ __('Cancel') }} - + @endif
@@ -50,7 +48,7 @@ @if ($contacts_list->id)
- + plus {{ __('Add contacts') }} @@ -76,12 +74,12 @@ @include('admin.account.parts.forms.select_domain')
{{ __('Reset') }} + class="btn secondary">{{ __('Reset') }}
- trash {{ __('Remove') }} diff --git a/flexiapi/resources/views/admin/contacts_list/delete.blade.php b/flexiapi/resources/views/admin/contacts_list/delete.blade.php index 499afd7..7de4034 100644 --- a/flexiapi/resources/views/admin/contacts_list/delete.blade.php +++ b/flexiapi/resources/views/admin/contacts_list/delete.blade.php @@ -10,7 +10,7 @@ @section('content')

trash {{ __('Delete') }}

-
{{ __('Cancel') }} + {{ __('Cancel') }}
diff --git a/flexiapi/resources/views/admin/phone_country/index.blade.php b/flexiapi/resources/views/admin/phone_country/index.blade.php index 1b809ec..a8244c2 100644 --- a/flexiapi/resources/views/admin/phone_country/index.blade.php +++ b/flexiapi/resources/views/admin/phone_country/index.blade.php @@ -4,10 +4,10 @@

flag {{ __('Phone Countries') }}

- + eye {{ __('Activate All') }} - + eye-closed {{ __('Deactivate All') }}
@@ -18,7 +18,7 @@ {{ __('Name') }} - {{ __('Actions') }} + @@ -37,11 +37,11 @@ @if ($phone_country->activated) - + eye-closed @else - + eye @endif diff --git a/flexiapi/resources/views/admin/space/create.blade.php b/flexiapi/resources/views/admin/space/create.blade.php index 972d4f7..ff2125e 100644 --- a/flexiapi/resources/views/admin/space/create.blade.php +++ b/flexiapi/resources/views/admin/space/create.blade.php @@ -10,7 +10,7 @@ @section('content')

user-rectangle {{ __('Create') }}

- {{ __('Cancel') }} + {{ __('Cancel') }}

trash {{ __('Delete') }}

- {{ __('Cancel') }} + {{ __('Cancel') }}
@csrf diff --git a/flexiapi/resources/views/admin/space/email_server/delete.blade.php b/flexiapi/resources/views/admin/space/email_server/delete.blade.php index baedbf8..b6bf36e 100644 --- a/flexiapi/resources/views/admin/space/email_server/delete.blade.php +++ b/flexiapi/resources/views/admin/space/email_server/delete.blade.php @@ -19,7 +19,7 @@

trash {{ __('Delete') }}

- {{ __('Cancel') }} + {{ __('Cancel') }}
diff --git a/flexiapi/resources/views/admin/space/integration.blade.php b/flexiapi/resources/views/admin/space/integration.blade.php index 0774973..ed3e310 100644 --- a/flexiapi/resources/views/admin/space/integration.blade.php +++ b/flexiapi/resources/views/admin/space/integration.blade.php @@ -29,9 +29,9 @@ @endif @if ($space->emailServer) {{ __('Edit') }} - {{ __('Delete') }} + {{ __('Delete') }} @else - {{ __('Configure') }} + {{ __('Configure') }} @endif

diff --git a/flexiapi/resources/views/admin/space/show.blade.php b/flexiapi/resources/views/admin/space/show.blade.php index 08ab75d..20bc48b 100644 --- a/flexiapi/resources/views/admin/space/show.blade.php +++ b/flexiapi/resources/views/admin/space/show.blade.php @@ -14,12 +14,12 @@

globe-hemisphere-west {{ $space->name }}

- isFull())disabled @endif href="{{ route('admin.account.create', ['domain' => $space->domain]) }}"> + isFull())disabled @endif href="{{ route('admin.account.create', ['domain' => $space->domain]) }}"> user-plus {{ __('Create') }} @if (auth()->user()->superAdmin) - + trash {{ __('Delete') }} @@ -55,7 +55,7 @@ - isFull())disabled @endif href="{{ route('admin.account.create', ['admin' => true, 'domain' => $space->domain]) }}">user-plus {{ __('New Admin') }} + isFull())disabled @endif href="{{ route('admin.account.create', ['admin' => true, 'domain' => $space->domain]) }}">user-plus {{ __('New Admin') }}

Admins

@@ -75,7 +75,7 @@ @foreach ($space->admins as $admin) - + {{ $admin->identifier }} diff --git a/flexiapi/resources/views/admin/statistics/parts/filters.blade.php b/flexiapi/resources/views/admin/statistics/parts/filters.blade.php index 93b85b5..3030dc8 100644 --- a/flexiapi/resources/views/admin/statistics/parts/filters.blade.php +++ b/flexiapi/resources/views/admin/statistics/parts/filters.blade.php @@ -44,8 +44,8 @@
- {{ __('Reset') }} - {{ __('Reset') }} + download-simple {{ __('Export') }} diff --git a/flexiapi/resources/views/admin/statistics/show_call_logs.blade.php b/flexiapi/resources/views/admin/statistics/show_call_logs.blade.php index a5a9539..4f886f5 100644 --- a/flexiapi/resources/views/admin/statistics/show_call_logs.blade.php +++ b/flexiapi/resources/views/admin/statistics/show_call_logs.blade.php @@ -43,7 +43,7 @@
diff --git a/flexiapi/resources/views/errors/minimal.blade.php b/flexiapi/resources/views/errors/minimal.blade.php index e87611c..931dcb7 100644 --- a/flexiapi/resources/views/errors/minimal.blade.php +++ b/flexiapi/resources/views/errors/minimal.blade.php @@ -7,7 +7,7 @@

@yield('message')

- + Go back to the homepage

diff --git a/flexiapi/resources/views/mails/provisioning.blade.php b/flexiapi/resources/views/mails/provisioning.blade.php new file mode 100644 index 0000000..a5404e5 --- /dev/null +++ b/flexiapi/resources/views/mails/provisioning.blade.php @@ -0,0 +1,20 @@ + + + Authenticate on {{ space()->name }} + + +

Hello,

+

+ You are trying to authenticate to {{ space()->name }} using your device.
+ You can configure your new device by directly flashing the QRCode or using the provisioning link:
+ +
+ + Provisioning link: {{ $provisioning_link }} +

+

+ Regards,
+ {{ config('mail.signature') }} +

+ + \ No newline at end of file diff --git a/flexiapi/resources/views/mails/provisioning_custom.blade.php.example b/flexiapi/resources/views/mails/provisioning_custom.blade.php.example new file mode 100644 index 0000000..0990861 --- /dev/null +++ b/flexiapi/resources/views/mails/provisioning_custom.blade.php.example @@ -0,0 +1,19 @@ + + + Authenticate on {{ space()->name }} + + +

Hello,

+

+ You are trying to authenticate to {{ space()->name }} using your device.
+ You can configure your new device by directly flashing the QRCode or using the provisioning link:
+ +
+ Provisioning link: {{ $provisioning_link }} +

+

+ Regards,
+ {{ config('mail.signature') }} +

+ + \ No newline at end of file diff --git a/flexiapi/resources/views/mails/provisioning_text.blade.php b/flexiapi/resources/views/mails/provisioning_text.blade.php new file mode 100644 index 0000000..a0e2968 --- /dev/null +++ b/flexiapi/resources/views/mails/provisioning_text.blade.php @@ -0,0 +1,10 @@ +Hello, + +You are trying to authenticate to {{ space()->name }} using your device. + +You can configure your new device by using the provisioning link. + +Provisioning link: {{ $provisioning_link }} + +Regards, +{{ config('mail.signature') }} \ No newline at end of file diff --git a/flexiapi/resources/views/mails/provisioning_text_custom.blade.php.example b/flexiapi/resources/views/mails/provisioning_text_custom.blade.php.example new file mode 100644 index 0000000..a0e2968 --- /dev/null +++ b/flexiapi/resources/views/mails/provisioning_text_custom.blade.php.example @@ -0,0 +1,10 @@ +Hello, + +You are trying to authenticate to {{ space()->name }} using your device. + +You can configure your new device by using the provisioning link. + +Provisioning link: {{ $provisioning_link }} + +Regards, +{{ config('mail.signature') }} \ No newline at end of file diff --git a/flexiapi/routes/web.php b/flexiapi/routes/web.php index f339de8..2d9c18b 100644 --- a/flexiapi/routes/web.php +++ b/flexiapi/routes/web.php @@ -41,6 +41,7 @@ use App\Http\Controllers\Admin\ContactsListContactController; use App\Http\Controllers\Admin\ContactsListController; use App\Http\Controllers\Admin\ExternalAccountController; use App\Http\Controllers\Admin\PhoneCountryController; +use App\Http\Controllers\Admin\ProvisioningEmailController; use App\Http\Controllers\Admin\ResetPasswordEmailController; use App\Http\Controllers\Admin\Space\EmailServerController; use App\Http\Controllers\Admin\SpaceController; @@ -203,36 +204,6 @@ Route::middleware(['web_panel_enabled', 'space.check'])->group(function () { }); Route::name('account.')->prefix('accounts')->group(function () { - Route::controller(AdminAccountController::class)->group(function () { - Route::get('{account_id}/provision', 'provision')->name('provision'); - - Route::get('create', 'create')->name('create'); - Route::post('accounts', 'store')->name('store'); - - Route::get('{account_id}/edit', 'edit')->name('edit'); - Route::put('{account_id}', 'update')->name('update'); - - Route::get('{account_id}/delete', 'delete')->name('delete'); - Route::delete('/', 'destroy')->name('destroy'); - - Route::get('/', 'index')->name('index'); - Route::post('search', 'search')->name('search'); - - Route::get('{account_id}/contacts_lists/detach', 'contactsListRemove')->name('contacts_lists.detach'); - Route::post('{account_id}/contacts_lists', 'contactsListAdd')->name('contacts_lists.attach'); - }); - - Route::name('reset_password_email.')->controller(ResetPasswordEmailController::class)->prefix('{account_id}/reset_password_emails')->group(function () { - Route::get('create', 'create')->name('create'); - Route::get('send', 'send')->name('send'); - }); - - Route::name('import.')->prefix('import')->controller(AccountImportController::class)->group(function () { - Route::get('/', 'create')->name('create'); - Route::post('/', 'store')->name('store'); - Route::post('handle', 'handle')->name('handle'); - }); - Route::middleware(['intercom_features'])->group(function () { Route::name('type.')->prefix('types')->controller(AccountTypeController::class)->group(function () { Route::get('/', 'index')->name('index'); @@ -260,7 +231,44 @@ Route::middleware(['web_panel_enabled', 'space.check'])->group(function () { }); }); + Route::controller(AdminAccountController::class)->group(function () { + Route::get('{account_id}/provision', 'provision')->name('provision'); + + Route::get('create', 'create')->name('create'); + Route::get('{account_id}', 'show')->name('show'); + Route::post('accounts', 'store')->name('store'); + + Route::get('{account_id}/edit', 'edit')->name('edit'); + Route::put('{account_id}', 'update')->name('update'); + + Route::get('{account_id}/delete', 'delete')->name('delete'); + Route::delete('/', 'destroy')->name('destroy'); + + Route::get('/', 'index')->name('index'); + Route::post('search', 'search')->name('search'); + + Route::get('{account_id}/contacts_lists/detach', 'contactsListRemove')->name('contacts_lists.detach'); + Route::post('{account_id}/contacts_lists', 'contactsListAdd')->name('contacts_lists.attach'); + }); + + Route::name('reset_password_email.')->controller(ResetPasswordEmailController::class)->prefix('{account_id}/reset_password_email')->group(function () { + Route::get('create', 'create')->name('create'); + Route::get('send', 'send')->name('send'); + }); + + Route::name('provisioning_email.')->controller(ProvisioningEmailController::class)->prefix('{account_id}/provisioning_email')->group(function () { + Route::get('create', 'create')->name('create'); + Route::get('send', 'send')->name('send'); + }); + + Route::name('import.')->prefix('import')->controller(AccountImportController::class)->group(function () { + Route::get('/', 'create')->name('create'); + Route::post('/', 'store')->name('store'); + Route::post('handle', 'handle')->name('handle'); + }); + Route::name('contact.')->prefix('{account}/contacts')->controller(AccountContactController::class)->group(function () { + Route::get('/', 'index')->name('index'); Route::get('create', 'create')->name('create'); Route::post('/', 'store')->name('store'); Route::get('{contact_id}/delete', 'delete')->name('delete'); @@ -268,13 +276,11 @@ Route::middleware(['web_panel_enabled', 'space.check'])->group(function () { }); Route::name('device.')->prefix('{account}/devices')->controller(AccountDeviceController::class)->group(function () { - Route::get('/', 'index')->name('index'); Route::get('{device_id}/delete', 'delete')->name('delete'); Route::delete('/', 'destroy')->name('destroy'); }); Route::name('dictionary.')->prefix('{account}/dictionary')->controller(AccountDictionaryController::class)->group(function () { - Route::get('/', 'index')->name('index'); Route::get('create', 'create')->name('create'); Route::post('/', 'store')->name('store'); Route::get('{entry}/edit', 'edit')->name('edit');