*/ public static function recipients(): array { $settings = (array) (json_decode(Setting::where('key', 'email_settings')->value('value') ?? '', true) ?? []); return array_key_exists(self::SETTING_FIELD, $settings) ? array_values(array_filter((array) $settings[self::SETTING_FIELD])) : self::DEFAULT_RECIPIENTS; } public static function send(User $admin, string $ip, ?string $userAgent): void { $recipients = self::recipients(); if ($recipients === [] || ! AutoEmailGate::allows('admin_login_alert')) { return; } try { Mail::to($recipients)->queue(new AdminLoginAlertMail([ 'admin_name' => (string) ($admin->fullname ?: $admin->username), 'admin_username' => (string) ($admin->username ?? $admin->email), 'login_time' => now()->format('d/m/Y H:i:s'), 'client_ip' => $ip, 'user_agent' => (string) ($userAgent ?: 'Không xác định'), ])); } catch (\Throwable $e) { Log::warning('Không gửi được email thông báo đăng nhập admin', ['admin_id' => $admin->id, 'error' => $e->getMessage()]); } } }