mirror of
https://github.com/pelican-dev/panel.git
synced 2025-05-20 01:44:45 +02:00

* add database notifications to all panels * add successful param to Installed event * add listener for Installed event * create event for subuser creation * add listener for SubUserAdded event * always send Installed event * create event for subuser removal * add listener for SubUserRemoved event * add prefix to server name * remove view action from SubUserRemoved notification
41 lines
1.3 KiB
PHP
41 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Subusers;
|
|
|
|
use App\Events\Server\SubUserRemoved;
|
|
use App\Exceptions\Http\Connection\DaemonConnectionException;
|
|
use App\Facades\Activity;
|
|
use App\Models\Server;
|
|
use App\Models\Subuser;
|
|
use App\Repositories\Daemon\DaemonServerRepository;
|
|
|
|
class SubuserDeletionService
|
|
{
|
|
public function __construct(
|
|
private DaemonServerRepository $serverRepository,
|
|
) {}
|
|
|
|
public function handle(Subuser $subuser, Server $server): void
|
|
{
|
|
$log = Activity::event('server:subuser.delete')
|
|
->subject($subuser->user)
|
|
->property('email', $subuser->user->email)
|
|
->property('revoked', true);
|
|
|
|
$log->transaction(function ($instance) use ($server, $subuser) {
|
|
$subuser->delete();
|
|
|
|
event(new SubUserRemoved($subuser->server, $subuser->user));
|
|
|
|
try {
|
|
$this->serverRepository->setServer($server)->revokeUserJTI($subuser->user_id);
|
|
} catch (DaemonConnectionException $exception) {
|
|
// Don't block this request if we can't connect to the daemon instance.
|
|
logger()->warning($exception, ['user_id' => $subuser->user_id, 'server_id' => $server->id]);
|
|
|
|
$instance->property('revoked', false);
|
|
}
|
|
});
|
|
}
|
|
}
|