UserObserver.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace App\Observers;
  3. use App\Components\Helpers;
  4. use App\Jobs\VNet\addUser;
  5. use App\Jobs\VNet\delUser;
  6. use App\Jobs\VNet\editUser;
  7. use App\Models\User;
  8. use App\Models\UserSubscribe;
  9. use Arr;
  10. class UserObserver
  11. {
  12. public function created(User $user): void
  13. {
  14. $user->subscribe()->create(['code' => Helpers::makeSubscribeCode()]);
  15. $allowNodes = $user->nodes()->whereType(4)->get()->pluck('id');
  16. if ($allowNodes) {
  17. addUser::dispatch($user->id, $allowNodes);
  18. }
  19. }
  20. public function updated(User $user): void
  21. {
  22. $changes = $user->getChanges();
  23. $allowNodes = $user->nodes()->whereType(4)->get();
  24. if ($allowNodes->isNotEmpty() && Arr::hasAny($changes, ['level', 'group_id', 'port', 'passwd', 'speed_limit', 'enable'])) {
  25. editUser::dispatch($user, $allowNodes);
  26. }
  27. }
  28. public function deleted(User $user): void
  29. {
  30. $allowNodes = $user->nodes()->whereType(4)->get();
  31. if ($allowNodes->isNotEmpty()) {
  32. delUser::dispatch($user->id, $allowNodes);
  33. }
  34. }
  35. }