Fix FLEXIAPI-312 Add Redis publish event when updating the externalAccount to...

This commit is contained in:
Timothée Jaussoin 2025-07-23 08:44:31 +00:00
parent 058d253dbc
commit 8882cdab18
3 changed files with 34 additions and 2 deletions

View file

@ -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
----

View file

@ -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;
}
}

View file

@ -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;
}
}