. */ declare(strict_types=1); namespace FireflyIII\Notifications\User; use Exception; use FireflyIII\Exceptions\FireflyException; use Illuminate\Bus\Queueable; use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Messages\SlackMessage; use Illuminate\Notifications\Notification; use Illuminate\Support\Facades\Log; class UserLogin extends Notification { use Queueable; private string $ip; /** * Create a new notification instance. * * @return void */ public function __construct(string $ip) { $this->ip = $ip; } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ public function toArray($notifiable) { return [ // ]; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return MailMessage */ public function toMail($notifiable) { $time = now(config('app.timezone'))->isoFormat((string)trans('config.date_time_js')); $host = ''; try { $hostName = app('steam')->getHostName($this->ip); } catch (FireflyException $e) { Log::error($e->getMessage()); $hostName = $this->ip; } if ($hostName !== $this->ip) { $host = $hostName; } return (new MailMessage()) ->markdown('emails.new-ip', ['time' => $time, 'ipAddress' => $this->ip, 'host' => $host]) ->subject((string)trans('email.login_from_new_ip')); } /** * Get the Slack representation of the notification. * * @param mixed $notifiable * @return SlackMessage */ public function toSlack($notifiable) { $host = ''; try { $hostName = app('steam')->getHostName($this->ip); } catch (FireflyException $e) { Log::error($e->getMessage()); $hostName = $this->ip; } if ($hostName !== $this->ip) { $host = $hostName; } return (new SlackMessage())->content((string)trans('email.slack_login_from_new_ip', ['host' => $host, 'ip' => $this->ip])); } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { return ['mail', 'slack']; } }