diff --git a/CHANGELOG.md b/CHANGELOG.md index 3442fc9..59c62fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,7 @@ v2.0 - Fix FLEXIAPI-354 Fix contact deletion - Fix FLEXIAPI-360 Add rules on some jobs to only run them in the Gitlab pipeline when needed - Fix FLEXIAPI-362 Return an empty object and not an empty array in the vcards-storage index endpoint to prevent some parsing issues in the clients +- Fix FLEXIAPI-312 Add Redis publish event when updating the externalAccount to ping the Flexisip B2BUA v1.6 ---- diff --git a/flexiapi/app/Libraries/FlexisipRedisConnector.php b/flexiapi/app/Libraries/FlexisipRedisConnector.php index dbd2c6a..7ca3ada 100644 --- a/flexiapi/app/Libraries/FlexisipRedisConnector.php +++ b/flexiapi/app/Libraries/FlexisipRedisConnector.php @@ -20,6 +20,8 @@ namespace App\Libraries; use App\Device; +use App\ExternalAccount; + use Illuminate\Support\Facades\Redis; use Illuminate\Support\Facades\Log; use stdClass; @@ -54,4 +56,21 @@ class FlexisipRedisConnector Log::error('Redis server issue: ' . $th->getMessage()); } } + + public function pingB2BUA(ExternalAccount $externalAccount): bool + { + try { + Redis::publish('flexisip/B2BUA/account', json_encode([ + 'username' => $externalAccount->username, + 'domain' => $externalAccount->domain, + 'identifier' => "$externalAccount->id" + ])); + + return true; + } catch (\Throwable $th) { + Log::error('Redis server issue: ' . $th->getMessage()); + } + + return false; + } } diff --git a/flexiapi/app/Services/AccountService.php b/flexiapi/app/Services/AccountService.php index c88e705..14f4e1c 100644 --- a/flexiapi/app/Services/AccountService.php +++ b/flexiapi/app/Services/AccountService.php @@ -26,17 +26,20 @@ use App\EmailChangeCode; use App\ExternalAccount; use App\Http\Requests\Account\Create\Request as CreateRequest; use App\Http\Requests\Account\Update\Request as UpdateRequest; +use App\Libraries\FlexisipRedisConnector; use App\Libraries\OvhSMS; use App\Mail\NewsletterRegistration; use App\Mail\RecoverByCode; use App\Mail\RegisterValidation; use App\PhoneChangeCode; use App\Rules\FilteredPhone; -use Illuminate\Support\Facades\Log; + use Carbon\Carbon; -use Illuminate\Support\Facades\Mail; + use Illuminate\Http\Request; +use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Mail; use Illuminate\Validation\Rule; class AccountService @@ -194,8 +197,15 @@ class AccountService public function destroy(Request $request, int $accountId) { $account = Account::findOrFail($accountId); + + $externalAccount = $account->external; + $account->delete(); + if ($externalAccount) { + (new FlexisipRedisConnector)->pingB2BUA($externalAccount); + } + Log::channel('events')->info( 'Account Service: Account destroyed', ['id' => $account->identifier] @@ -443,6 +453,8 @@ class AccountService $externalAccount->save(); + (new FlexisipRedisConnector)->pingB2BUA($externalAccount); + return $externalAccount; } }