mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Merge branch 'develop' into 5.8-dev
This commit is contained in:
commit
416fe0c147
@ -26,7 +26,10 @@ namespace FireflyIII\Handlers\Events;
|
||||
use Exception;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Mail\AccessTokenCreatedMail;
|
||||
use FireflyIII\Notifications\Admin\TestNotification;
|
||||
use FireflyIII\Notifications\User\NewAccessToken;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use Illuminate\Support\Facades\Notification;
|
||||
use Laravel\Passport\Events\AccessTokenCreated;
|
||||
use Log;
|
||||
use Mail;
|
||||
@ -42,45 +45,18 @@ class APIEventHandler
|
||||
*
|
||||
* @param AccessTokenCreated $event
|
||||
*
|
||||
* @return bool
|
||||
* @throws FireflyException
|
||||
* @deprecated
|
||||
*/
|
||||
public function accessTokenCreated(AccessTokenCreated $event): bool
|
||||
public function accessTokenCreated(AccessTokenCreated $event): void
|
||||
{
|
||||
Log::debug(__METHOD__);
|
||||
/** @var UserRepositoryInterface $repository */
|
||||
$repository = app(UserRepositoryInterface::class);
|
||||
$user = $repository->find((int) $event->userId);
|
||||
|
||||
if (null !== $user) {
|
||||
$email = $user->email;
|
||||
|
||||
// if user is demo user, send to owner:
|
||||
if ($user->hasRole('demo')) {
|
||||
$email = config('firefly.site_owner');
|
||||
}
|
||||
|
||||
// see if user has alternative email address:
|
||||
$pref = app('preferences')->getForUser($user, 'remote_guard_alt_email');
|
||||
if (null !== $pref) {
|
||||
$email = (string) (is_array($pref->data) ? $email : $pref->data);
|
||||
}
|
||||
|
||||
Log::debug(sprintf('Now in APIEventHandler::accessTokenCreated. Email is %s', $email));
|
||||
try {
|
||||
Log::debug('Trying to send message...');
|
||||
Mail::to($email)->send(new AccessTokenCreatedMail);
|
||||
|
||||
} catch (Exception $e) { // @phpstan-ignore-line
|
||||
Log::debug('Send message failed! :(');
|
||||
Log::error($e->getMessage());
|
||||
Log::error($e->getTraceAsString());
|
||||
Session::flash('error', 'Possible email error: ' . $e->getMessage());
|
||||
}
|
||||
|
||||
Log::debug('If no error above this line, message was sent.');
|
||||
Notification::send($user, new NewAccessToken);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -45,17 +45,15 @@ class AdminEventHandler
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function sendTestMessage(AdminRequestedTestMessage $event): bool
|
||||
public function sendTestMessage(AdminRequestedTestMessage $event): void
|
||||
{
|
||||
/** @var UserRepositoryInterface $repository */
|
||||
$repository = app(UserRepositoryInterface::class);
|
||||
// do some validation.
|
||||
|
||||
if (!$repository->hasRole($event->user, 'owner')) {
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
Notification::send($event->user, new TestNotification($event->user->email));
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,12 @@ use Exception;
|
||||
use FireflyIII\Events\RequestedReportOnJournals;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Mail\ReportNewJournalsMail;
|
||||
use FireflyIII\Models\TransactionGroup;
|
||||
use FireflyIII\Notifications\User\NewAccessToken;
|
||||
use FireflyIII\Notifications\User\TransactionCreation;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use FireflyIII\Transformers\TransactionGroupTransformer;
|
||||
use Illuminate\Support\Facades\Notification;
|
||||
use Log;
|
||||
use Mail;
|
||||
|
||||
@ -41,36 +46,31 @@ class AutomationHandler
|
||||
* Respond to the creation of X journals.
|
||||
*
|
||||
* @param RequestedReportOnJournals $event
|
||||
*
|
||||
* @return bool
|
||||
* @deprecated
|
||||
*/
|
||||
public function reportJournals(RequestedReportOnJournals $event): bool
|
||||
public function reportJournals(RequestedReportOnJournals $event): void
|
||||
{
|
||||
Log::debug('In reportJournals.');
|
||||
$sendReport = config('firefly.send_report_journals');
|
||||
|
||||
if (false === $sendReport) {
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
Log::debug('In reportJournals.');
|
||||
/** @var UserRepositoryInterface $repository */
|
||||
$repository = app(UserRepositoryInterface::class);
|
||||
$user = $repository->find($event->userId);
|
||||
if (null !== $user && 0 !== $event->groups->count()) {
|
||||
try {
|
||||
Log::debug('Trying to mail...');
|
||||
Mail::to($user->email)->send(new ReportNewJournalsMail($event->groups));
|
||||
|
||||
} catch (Exception $e) { // @phpstan-ignore-line
|
||||
Log::debug('Send message failed! :(');
|
||||
Log::error($e->getMessage());
|
||||
Log::error($e->getTraceAsString());
|
||||
}
|
||||
|
||||
Log::debug('Done!');
|
||||
if (null === $user || 0 === $event->groups->count()) {
|
||||
return;
|
||||
}
|
||||
|
||||
return true;
|
||||
// transform groups into array:
|
||||
/** @var TransactionGroupTransformer $transformer */
|
||||
$transformer = app(TransactionGroupTransformer::class);
|
||||
$groups = [];
|
||||
/** @var TransactionGroup $group */
|
||||
foreach ($event->groups as $group) {
|
||||
$groups[] = $transformer->transformObject($group);
|
||||
}
|
||||
|
||||
Notification::send($user, new TransactionCreation($groups));
|
||||
}
|
||||
}
|
||||
|
@ -39,8 +39,6 @@ class BillEventHandler
|
||||
/**
|
||||
* @param WarnUserAboutBill $event
|
||||
* @return void
|
||||
* @throws \FireflyIII\Exceptions\FireflyException
|
||||
* @deprecated
|
||||
*/
|
||||
public function warnAboutBill(WarnUserAboutBill $event): void
|
||||
{
|
||||
|
@ -33,16 +33,18 @@ use FireflyIII\Events\RequestedNewPassword;
|
||||
use FireflyIII\Events\UserChangedEmail;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Mail\ConfirmEmailChangeMail;
|
||||
use FireflyIII\Mail\NewIPAddressWarningMail;
|
||||
use FireflyIII\Mail\RegisteredUser as RegisteredUserMail;
|
||||
use FireflyIII\Mail\RequestedNewPassword as RequestedNewPasswordMail;
|
||||
use FireflyIII\Mail\UndoEmailChangeMail;
|
||||
use FireflyIII\Models\GroupMembership;
|
||||
use FireflyIII\Models\UserGroup;
|
||||
use FireflyIII\Models\UserRole;
|
||||
use FireflyIII\Notifications\User\UserLogin;
|
||||
use FireflyIII\Notifications\User\UserNewPassword;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use FireflyIII\User;
|
||||
use Illuminate\Auth\Events\Login;
|
||||
use Illuminate\Support\Facades\Notification;
|
||||
use Log;
|
||||
use Mail;
|
||||
|
||||
@ -62,7 +64,7 @@ class UserEventHandler
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function attachUserRole(RegisteredUser $event): bool
|
||||
public function attachUserRole(RegisteredUser $event): void
|
||||
{
|
||||
/** @var UserRepositoryInterface $repository */
|
||||
$repository = app(UserRepositoryInterface::class);
|
||||
@ -72,19 +74,16 @@ class UserEventHandler
|
||||
Log::debug('User count is one, attach role.');
|
||||
$repository->attachRole($event->user, 'owner');
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RegisteredUser $event
|
||||
* @return bool
|
||||
*/
|
||||
public function createExchangeRates(RegisteredUser $event): bool {
|
||||
public function createExchangeRates(RegisteredUser $event): void
|
||||
{
|
||||
$seeder = new ExchangeRateSeeder;
|
||||
$seeder->run();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -94,7 +93,7 @@ class UserEventHandler
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function checkSingleUserIsAdmin(Login $event): bool
|
||||
public function checkSingleUserIsAdmin(Login $event): void
|
||||
{
|
||||
/** @var UserRepositoryInterface $repository */
|
||||
$repository = app(UserRepositoryInterface::class);
|
||||
@ -117,8 +116,6 @@ class UserEventHandler
|
||||
// give user the role
|
||||
$repository->attachRole($user, 'owner');
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -127,7 +124,7 @@ class UserEventHandler
|
||||
* @return bool
|
||||
* @throws FireflyException
|
||||
*/
|
||||
public function createGroupMembership(RegisteredUser $event): bool
|
||||
public function createGroupMembership(RegisteredUser $event): void
|
||||
{
|
||||
$user = $event->user;
|
||||
$groupExists = true;
|
||||
@ -160,8 +157,6 @@ class UserEventHandler
|
||||
);
|
||||
$user->user_group_id = $group->id;
|
||||
$user->save();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -172,7 +167,7 @@ class UserEventHandler
|
||||
* @return bool
|
||||
* @throws FireflyException
|
||||
*/
|
||||
public function demoUserBackToEnglish(Login $event): bool
|
||||
public function demoUserBackToEnglish(Login $event): void
|
||||
{
|
||||
/** @var UserRepositoryInterface $repository */
|
||||
$repository = app(UserRepositoryInterface::class);
|
||||
@ -185,15 +180,12 @@ class UserEventHandler
|
||||
app('preferences')->setForUser($user, 'locale', 'equal');
|
||||
app('preferences')->mark();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DetectedNewIPAddress $event
|
||||
*
|
||||
* @throws FireflyException
|
||||
* @deprecated
|
||||
*/
|
||||
public function notifyNewIPAddress(DetectedNewIPAddress $event): void
|
||||
{
|
||||
@ -207,21 +199,10 @@ class UserEventHandler
|
||||
|
||||
$list = app('preferences')->getForUser($user, 'login_ip_history', [])->data;
|
||||
|
||||
// see if user has alternative email address:
|
||||
$pref = app('preferences')->getForUser($user, 'remote_guard_alt_email');
|
||||
if (null !== $pref) {
|
||||
$email = $pref->data;
|
||||
}
|
||||
|
||||
/** @var array $entry */
|
||||
foreach ($list as $index => $entry) {
|
||||
if (false === $entry['notified']) {
|
||||
try {
|
||||
Mail::to($email)->send(new NewIPAddressWarningMail($ipAddress));
|
||||
|
||||
} catch (Exception $e) { // @phpstan-ignore-line
|
||||
Log::error($e->getMessage());
|
||||
}
|
||||
Notification::send($user, new UserLogin($ipAddress));
|
||||
}
|
||||
$list[$index]['notified'] = true;
|
||||
}
|
||||
@ -230,41 +211,38 @@ class UserEventHandler
|
||||
}
|
||||
|
||||
/**
|
||||
* Send email to confirm email change.
|
||||
* Send email to confirm email change. Will not be made into a notification, because
|
||||
* this requires some custom fields from the user and not just the "user" object.
|
||||
*
|
||||
* @param UserChangedEmail $event
|
||||
*
|
||||
* @return bool
|
||||
* @throws FireflyException
|
||||
* @deprecated
|
||||
*/
|
||||
public function sendEmailChangeConfirmMail(UserChangedEmail $event): bool
|
||||
public function sendEmailChangeConfirmMail(UserChangedEmail $event): void
|
||||
{
|
||||
$newEmail = $event->newEmail;
|
||||
$oldEmail = $event->oldEmail;
|
||||
$user = $event->user;
|
||||
$token = app('preferences')->getForUser($user, 'email_change_confirm_token', 'invalid');
|
||||
$url = route('profile.confirm-email-change', [$token->data]);
|
||||
|
||||
try {
|
||||
Mail::to($newEmail)->send(new ConfirmEmailChangeMail($newEmail, $oldEmail, $url));
|
||||
|
||||
} catch (Exception $e) { // @phpstan-ignore-line
|
||||
Log::error($e->getMessage());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send email to be able to undo email change.
|
||||
* Send email to be able to undo email change. Will not be made into a notification, because
|
||||
* this requires some custom fields from the user and not just the "user" object.
|
||||
*
|
||||
* @param UserChangedEmail $event
|
||||
*
|
||||
* @return bool
|
||||
* @throws FireflyException
|
||||
* @deprecated
|
||||
*/
|
||||
public function sendEmailChangeUndoMail(UserChangedEmail $event): bool
|
||||
public function sendEmailChangeUndoMail(UserChangedEmail $event): void
|
||||
{
|
||||
$newEmail = $event->newEmail;
|
||||
$oldEmail = $event->oldEmail;
|
||||
@ -278,53 +256,36 @@ class UserEventHandler
|
||||
} catch (Exception $e) { // @phpstan-ignore-line
|
||||
Log::error($e->getMessage());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a new password to the user.
|
||||
* @deprecated
|
||||
* @param RequestedNewPassword $event
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function sendNewPassword(RequestedNewPassword $event): bool
|
||||
public function sendNewPassword(RequestedNewPassword $event): void
|
||||
{
|
||||
$email = $event->user->email;
|
||||
$ipAddress = $event->ipAddress;
|
||||
$token = $event->token;
|
||||
|
||||
$url = route('password.reset', [$token]);
|
||||
|
||||
// send email.
|
||||
try {
|
||||
Mail::to($email)->send(new RequestedNewPasswordMail($url, $ipAddress));
|
||||
|
||||
} catch (Exception $e) { // @phpstan-ignore-line
|
||||
Log::error($e->getMessage());
|
||||
}
|
||||
|
||||
return true;
|
||||
Notification::send($event->user, new UserNewPassword(route('password.reset', [$event->token])));
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will send the user a registration mail, welcoming him or her to Firefly III.
|
||||
* This message is only sent when the configuration of Firefly III says so.
|
||||
*
|
||||
* TODO this is an admin setting not a variable. Fix that first.
|
||||
*
|
||||
* @param RegisteredUser $event
|
||||
*
|
||||
* @return bool
|
||||
* @deprecated
|
||||
* @throws FireflyException
|
||||
* @deprecated
|
||||
*/
|
||||
public function sendRegistrationMail(RegisteredUser $event): bool
|
||||
public function sendRegistrationMail(RegisteredUser $event): void
|
||||
{
|
||||
$sendMail = config('firefly.send_registration_mail');
|
||||
if ($sendMail) {
|
||||
// get the email address
|
||||
$email = $event->user->email;
|
||||
$url = route('index');
|
||||
$email = $event->user->email;
|
||||
$url = route('index');
|
||||
|
||||
// see if user has alternative email address:
|
||||
$pref = app('preferences')->getForUser($event->user, 'remote_guard_alt_email');
|
||||
@ -341,8 +302,6 @@ class UserEventHandler
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -355,7 +314,7 @@ class UserEventHandler
|
||||
$user = $event->user;
|
||||
/** @var array $preference */
|
||||
|
||||
if($user->hasRole('demo')) {
|
||||
if ($user->hasRole('demo')) {
|
||||
Log::debug('Do not log demo user logins');
|
||||
return;
|
||||
}
|
||||
|
@ -380,13 +380,19 @@ class CreateRecurringTransactions implements ShouldQueue
|
||||
|
||||
// create transaction array and send to factory.
|
||||
$groupTitle = null;
|
||||
if ($recurrence->recurrenceTransactions->count() > 1) {
|
||||
$count = $recurrence->recurrenceTransactions->count();
|
||||
if ($count > 1) {
|
||||
/** @var RecurrenceTransaction $first */
|
||||
|
||||
$first = $recurrence->recurrenceTransactions()->first();
|
||||
$groupTitle = $first->description;
|
||||
|
||||
}
|
||||
if(0 === $count) {
|
||||
Log::error('No transactions to be created in this recurrence. Cannot continue.');
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
$array = [
|
||||
'user' => $recurrence->user_id,
|
||||
|
@ -30,16 +30,13 @@ class NewAccessToken extends Notification
|
||||
{
|
||||
use Queueable;
|
||||
|
||||
private string $address;
|
||||
|
||||
/**
|
||||
* Create a new notification instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(string $address)
|
||||
public function __construct()
|
||||
{
|
||||
$this->address = $address;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -62,8 +59,8 @@ class NewAccessToken extends Notification
|
||||
public function toMail($notifiable)
|
||||
{
|
||||
return (new MailMessage)
|
||||
->markdown('emails.admin-test', ['email' => $this->address])
|
||||
->subject((string) trans('email.admin_test_subject'));
|
||||
->markdown('emails.token-created')
|
||||
->subject((string) trans('email.access_token_created_subject'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -22,7 +22,61 @@ declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Notifications\User;
|
||||
|
||||
class TransactionCreation
|
||||
{
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Notifications\Notification;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
class TransactionCreation extends Notification
|
||||
{
|
||||
use Queueable;
|
||||
|
||||
private array $collection;
|
||||
|
||||
/**
|
||||
* Create a new notification instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(array $collection)
|
||||
{
|
||||
$this->collection = $collection;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the notification's delivery channels.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return array
|
||||
*/
|
||||
public function via($notifiable)
|
||||
{
|
||||
return ['mail'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the mail representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return \Illuminate\Notifications\Messages\MailMessage
|
||||
*/
|
||||
public function toMail($notifiable)
|
||||
{
|
||||
return (new MailMessage)
|
||||
->markdown('emails.report-new-journals', ['transformed' => $this->collection])
|
||||
->subject((string) trans_choice('email.new_journals_subject', count($this->collection)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the array representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($notifiable)
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,73 @@ declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Notifications\User;
|
||||
|
||||
class UserLogin
|
||||
{
|
||||
use Exception;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Notifications\Notification;
|
||||
|
||||
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 notification's delivery channels.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return array
|
||||
*/
|
||||
public function via($notifiable)
|
||||
{
|
||||
return ['mail'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the mail representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return \Illuminate\Notifications\Messages\MailMessage
|
||||
*/
|
||||
public function toMail($notifiable)
|
||||
{
|
||||
$time = now(config('app.timezone'))->isoFormat((string) trans('config.date_time_js'));
|
||||
$host = '';
|
||||
try {
|
||||
$hostName = gethostbyaddr($this->ip);
|
||||
} catch (Exception $e) {
|
||||
$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 array representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($notifiable)
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,28 +0,0 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/*
|
||||
* UserNewEmail.php
|
||||
* Copyright (c) 2022 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace FireflyIII\Notifications\User;
|
||||
|
||||
class UserNewEmail
|
||||
{
|
||||
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/*
|
||||
* UserNewEmailUndo.php
|
||||
* Copyright (c) 2022 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace FireflyIII\Notifications\User;
|
||||
|
||||
class UserNewEmailUndo
|
||||
{
|
||||
|
||||
}
|
@ -22,7 +22,60 @@ declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Notifications\User;
|
||||
|
||||
class UserNewPassword
|
||||
{
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Notifications\Notification;
|
||||
|
||||
class UserNewPassword extends Notification
|
||||
{
|
||||
use Queueable;
|
||||
|
||||
private string $url;
|
||||
|
||||
/**
|
||||
* Create a new notification instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(string $url)
|
||||
{
|
||||
$this->url = $url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the notification's delivery channels.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return array
|
||||
*/
|
||||
public function via($notifiable)
|
||||
{
|
||||
return ['mail'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the mail representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return \Illuminate\Notifications\Messages\MailMessage
|
||||
*/
|
||||
public function toMail($notifiable)
|
||||
{
|
||||
return (new MailMessage)
|
||||
->markdown('emails.password', ['url' => $this->url])
|
||||
->subject((string) trans('email.reset_pw_subject'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the array representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($notifiable)
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
|
@ -159,7 +159,7 @@ class EventServiceProvider extends ServiceProvider
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* TODO needs a dedicated method.
|
||||
*/
|
||||
protected function registerBudgetEvents(): void
|
||||
{
|
||||
@ -206,13 +206,10 @@ class EventServiceProvider extends ServiceProvider
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* TODO needs a dedicated (static) method.
|
||||
*/
|
||||
protected function registerCreateEvents(): void
|
||||
{
|
||||
|
||||
|
||||
// in case of repeated piggy banks and/or other problems.
|
||||
PiggyBank::created(
|
||||
static function (PiggyBank $piggyBank) {
|
||||
$repetition = new PiggyBankRepetition;
|
||||
@ -223,40 +220,6 @@ class EventServiceProvider extends ServiceProvider
|
||||
$repetition->save();
|
||||
}
|
||||
);
|
||||
Client::created(
|
||||
static function (Client $oauthClient) {
|
||||
/** @var UserRepositoryInterface $repository */
|
||||
$repository = app(UserRepositoryInterface::class);
|
||||
$user = $repository->find((int) $oauthClient->user_id);
|
||||
if (null === $user) {
|
||||
Log::info('OAuth client generated but no user associated.');
|
||||
|
||||
return;
|
||||
}
|
||||
// HERE WE ARE
|
||||
Notification::send($event->user, new TestNotification($event->user->email));
|
||||
|
||||
$email = $user->email;
|
||||
|
||||
// see if user has alternative email address:
|
||||
$pref = app('preferences')->getForUser($user, 'remote_guard_alt_email');
|
||||
if (null !== $pref) {
|
||||
$email = $pref->data;
|
||||
}
|
||||
|
||||
Log::debug(sprintf('Now in EventServiceProvider::registerCreateEvents. Email is %s', $email));
|
||||
try {
|
||||
Log::debug('Trying to send message...');
|
||||
Mail::to($email)->send(new OAuthTokenCreatedMail($oauthClient));
|
||||
} catch (TypeError|Exception $e) { // @phpstan-ignore-line
|
||||
Log::debug('Send message failed! :(');
|
||||
Log::error($e->getMessage());
|
||||
Log::error($e->getTraceAsString());
|
||||
Session::flash('error', 'Possible email error: ' . $e->getMessage());
|
||||
}
|
||||
Log::debug('If no error above this line, message was sent.');
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -566,6 +566,10 @@ class User extends Authenticatable
|
||||
if (null !== $pref) {
|
||||
$email = $pref->data;
|
||||
}
|
||||
// if user is demo user, send to owner:
|
||||
if ($this->hasRole('demo')) {
|
||||
$email = config('firefly.site_owner');
|
||||
}
|
||||
|
||||
return match ($driver) {
|
||||
'database' => $this->notifications(),
|
||||
|
@ -100,10 +100,10 @@
|
||||
"pragmarx/google2fa": "^8.0",
|
||||
"predis/predis": "^2.0",
|
||||
"psr/log": "<4",
|
||||
"ramsey/uuid": "^4.4",
|
||||
"ramsey/uuid": "^4.5",
|
||||
"rcrowe/twigbridge": "^0.14",
|
||||
"spatie/data-transfer-object": "^3.8",
|
||||
"spatie/laravel-ignition": "^1.4",
|
||||
"spatie/data-transfer-object": "^3.9",
|
||||
"spatie/laravel-ignition": "^1.5",
|
||||
"symfony/http-client": "^6.0",
|
||||
"symfony/mailgun-mailer": "^6.0"
|
||||
},
|
||||
|
146
composer.lock
generated
146
composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "9f9d24b848eb536353b6ffd489b6411d",
|
||||
"content-hash": "773f4b8dc111cdbdbdc38a66c6f3a3f9",
|
||||
"packages": [
|
||||
{
|
||||
"name": "bacon/bacon-qr-code",
|
||||
@ -1855,16 +1855,16 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/framework",
|
||||
"version": "v9.29.0",
|
||||
"version": "v9.30.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/framework.git",
|
||||
"reference": "585da0913e907fd54941260860ae3d7d4be8e8cb"
|
||||
"reference": "9533f7926f31939f25a620fbbf545318c18c943f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/585da0913e907fd54941260860ae3d7d4be8e8cb",
|
||||
"reference": "585da0913e907fd54941260860ae3d7d4be8e8cb",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/9533f7926f31939f25a620fbbf545318c18c943f",
|
||||
"reference": "9533f7926f31939f25a620fbbf545318c18c943f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1941,12 +1941,15 @@
|
||||
"illuminate/view": "self.version"
|
||||
},
|
||||
"require-dev": {
|
||||
"ably/ably-php": "^1.0",
|
||||
"aws/aws-sdk-php": "^3.198.1",
|
||||
"doctrine/dbal": "^2.13.3|^3.1.4",
|
||||
"fakerphp/faker": "^1.9.2",
|
||||
"guzzlehttp/guzzle": "^7.2",
|
||||
"league/flysystem-aws-s3-v3": "^3.0",
|
||||
"league/flysystem-ftp": "^3.0",
|
||||
"league/flysystem-path-prefixing": "^3.3",
|
||||
"league/flysystem-read-only": "^3.3",
|
||||
"league/flysystem-sftp-v3": "^3.0",
|
||||
"mockery/mockery": "^1.4.4",
|
||||
"orchestra/testbench-core": "^7.1",
|
||||
@ -1954,7 +1957,8 @@
|
||||
"phpstan/phpstan": "^1.4.7",
|
||||
"phpunit/phpunit": "^9.5.8",
|
||||
"predis/predis": "^1.1.9|^2.0",
|
||||
"symfony/cache": "^6.0"
|
||||
"symfony/cache": "^6.0",
|
||||
"symfony/uid": "^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ably/ably-php": "Required to use the Ably broadcast driver (^1.0).",
|
||||
@ -1974,6 +1978,8 @@
|
||||
"laravel/tinker": "Required to use the tinker console command (^2.0).",
|
||||
"league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).",
|
||||
"league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).",
|
||||
"league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).",
|
||||
"league/flysystem-read-only": "Required to use read-only disks (^3.3)",
|
||||
"league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).",
|
||||
"mockery/mockery": "Required to use mocking (^1.4.4).",
|
||||
"nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
|
||||
@ -1987,7 +1993,8 @@
|
||||
"symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).",
|
||||
"symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).",
|
||||
"symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).",
|
||||
"symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)."
|
||||
"symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).",
|
||||
"symfony/uid": "Required to generate ULIDs for Eloquent (^6.0)."
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@ -2031,20 +2038,20 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2022-09-09T18:21:21+00:00"
|
||||
"time": "2022-09-15T13:15:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/passport",
|
||||
"version": "v11.1.0",
|
||||
"version": "v11.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/passport.git",
|
||||
"reference": "89cc1976a25e2fa53ba8a3773e101189149852fa"
|
||||
"reference": "fb2a4029c6cf4df1ce0cf79ddbb874508f7a73e9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/passport/zipball/89cc1976a25e2fa53ba8a3773e101189149852fa",
|
||||
"reference": "89cc1976a25e2fa53ba8a3773e101189149852fa",
|
||||
"url": "https://api.github.com/repos/laravel/passport/zipball/fb2a4029c6cf4df1ce0cf79ddbb874508f7a73e9",
|
||||
"reference": "fb2a4029c6cf4df1ce0cf79ddbb874508f7a73e9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2108,7 +2115,7 @@
|
||||
"issues": "https://github.com/laravel/passport/issues",
|
||||
"source": "https://github.com/laravel/passport"
|
||||
},
|
||||
"time": "2022-09-05T14:35:34+00:00"
|
||||
"time": "2022-09-07T13:14:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/sanctum",
|
||||
@ -2237,16 +2244,16 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/ui",
|
||||
"version": "v4.0.1",
|
||||
"version": "v4.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/ui.git",
|
||||
"reference": "c43d29941ee8f41547572968123eadbd81392841"
|
||||
"reference": "9aa6930c8ae98b2465594d7f14f4ac131bfd6a99"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/ui/zipball/c43d29941ee8f41547572968123eadbd81392841",
|
||||
"reference": "c43d29941ee8f41547572968123eadbd81392841",
|
||||
"url": "https://api.github.com/repos/laravel/ui/zipball/9aa6930c8ae98b2465594d7f14f4ac131bfd6a99",
|
||||
"reference": "9aa6930c8ae98b2465594d7f14f4ac131bfd6a99",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2292,9 +2299,9 @@
|
||||
"ui"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/laravel/ui/tree/v4.0.1"
|
||||
"source": "https://github.com/laravel/ui/tree/v4.0.2"
|
||||
},
|
||||
"time": "2022-09-06T14:48:07+00:00"
|
||||
"time": "2022-09-09T18:20:35+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravelcollective/html",
|
||||
@ -2831,16 +2838,16 @@
|
||||
},
|
||||
{
|
||||
"name": "league/flysystem",
|
||||
"version": "3.3.0",
|
||||
"version": "3.5.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/flysystem.git",
|
||||
"reference": "d8295793b3e2f91aa39e1feb2d5bfce772891ae2"
|
||||
"reference": "f14993c6e394450ac4649da35264df0544d0234e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d8295793b3e2f91aa39e1feb2d5bfce772891ae2",
|
||||
"reference": "d8295793b3e2f91aa39e1feb2d5bfce772891ae2",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f14993c6e394450ac4649da35264df0544d0234e",
|
||||
"reference": "f14993c6e394450ac4649da35264df0544d0234e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2902,7 +2909,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/thephpleague/flysystem/issues",
|
||||
"source": "https://github.com/thephpleague/flysystem/tree/3.3.0"
|
||||
"source": "https://github.com/thephpleague/flysystem/tree/3.5.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2918,7 +2925,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-09-09T11:11:42+00:00"
|
||||
"time": "2022-09-18T18:23:19+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/fractal",
|
||||
@ -3136,16 +3143,16 @@
|
||||
},
|
||||
{
|
||||
"name": "league/uri",
|
||||
"version": "6.7.1",
|
||||
"version": "6.7.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/uri.git",
|
||||
"reference": "2d7c87a0860f3126a39f44a8a9bf2fed402dcfea"
|
||||
"reference": "d3b50812dd51f3fbf176344cc2981db03d10fe06"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/uri/zipball/2d7c87a0860f3126a39f44a8a9bf2fed402dcfea",
|
||||
"reference": "2d7c87a0860f3126a39f44a8a9bf2fed402dcfea",
|
||||
"url": "https://api.github.com/repos/thephpleague/uri/zipball/d3b50812dd51f3fbf176344cc2981db03d10fe06",
|
||||
"reference": "d3b50812dd51f3fbf176344cc2981db03d10fe06",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -3223,7 +3230,7 @@
|
||||
"docs": "https://uri.thephpleague.com",
|
||||
"forum": "https://thephpleague.slack.com",
|
||||
"issues": "https://github.com/thephpleague/uri/issues",
|
||||
"source": "https://github.com/thephpleague/uri/tree/6.7.1"
|
||||
"source": "https://github.com/thephpleague/uri/tree/6.7.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -3231,7 +3238,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2022-06-29T09:48:18+00:00"
|
||||
"time": "2022-09-13T19:50:42+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/uri-interfaces",
|
||||
@ -3572,20 +3579,20 @@
|
||||
},
|
||||
{
|
||||
"name": "nette/utils",
|
||||
"version": "v3.2.7",
|
||||
"version": "v3.2.8",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nette/utils.git",
|
||||
"reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99"
|
||||
"reference": "02a54c4c872b99e4ec05c4aec54b5a06eb0f6368"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99",
|
||||
"reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99",
|
||||
"url": "https://api.github.com/repos/nette/utils/zipball/02a54c4c872b99e4ec05c4aec54b5a06eb0f6368",
|
||||
"reference": "02a54c4c872b99e4ec05c4aec54b5a06eb0f6368",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2 <8.2"
|
||||
"php": ">=7.2 <8.3"
|
||||
},
|
||||
"conflict": {
|
||||
"nette/di": "<3.0.6"
|
||||
@ -3651,9 +3658,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/nette/utils/issues",
|
||||
"source": "https://github.com/nette/utils/tree/v3.2.7"
|
||||
"source": "https://github.com/nette/utils/tree/v3.2.8"
|
||||
},
|
||||
"time": "2022-01-24T11:29:14+00:00"
|
||||
"time": "2022-09-12T23:36:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nunomaduro/collision",
|
||||
@ -5052,20 +5059,20 @@
|
||||
},
|
||||
{
|
||||
"name": "ramsey/uuid",
|
||||
"version": "4.4.0",
|
||||
"version": "4.5.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/ramsey/uuid.git",
|
||||
"reference": "373f7bacfcf3de038778ff27dcce5672ddbf4c8a"
|
||||
"reference": "a161a26d917604dc6d3aa25100fddf2556e9f35d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/ramsey/uuid/zipball/373f7bacfcf3de038778ff27dcce5672ddbf4c8a",
|
||||
"reference": "373f7bacfcf3de038778ff27dcce5672ddbf4c8a",
|
||||
"url": "https://api.github.com/repos/ramsey/uuid/zipball/a161a26d917604dc6d3aa25100fddf2556e9f35d",
|
||||
"reference": "a161a26d917604dc6d3aa25100fddf2556e9f35d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"brick/math": "^0.8 || ^0.9 || ^0.10",
|
||||
"brick/math": "^0.8.8 || ^0.9 || ^0.10",
|
||||
"ext-ctype": "*",
|
||||
"ext-json": "*",
|
||||
"php": "^8.0",
|
||||
@ -5086,12 +5093,13 @@
|
||||
"php-mock/php-mock-mockery": "^1.3",
|
||||
"php-parallel-lint/php-parallel-lint": "^1.1",
|
||||
"phpbench/phpbench": "^1.0",
|
||||
"phpstan/extension-installer": "^1.0",
|
||||
"phpstan/phpstan": "^0.12",
|
||||
"phpstan/phpstan-mockery": "^0.12",
|
||||
"phpstan/phpstan-phpunit": "^0.12",
|
||||
"phpstan/extension-installer": "^1.1",
|
||||
"phpstan/phpstan": "^1.8",
|
||||
"phpstan/phpstan-mockery": "^1.1",
|
||||
"phpstan/phpstan-phpunit": "^1.1",
|
||||
"phpunit/phpunit": "^8.5 || ^9",
|
||||
"slevomat/coding-standard": "^7.0",
|
||||
"ramsey/composer-repl": "^1.4",
|
||||
"slevomat/coding-standard": "^8.4",
|
||||
"squizlabs/php_codesniffer": "^3.5",
|
||||
"vimeo/psalm": "^4.9"
|
||||
},
|
||||
@ -5129,7 +5137,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/ramsey/uuid/issues",
|
||||
"source": "https://github.com/ramsey/uuid/tree/4.4.0"
|
||||
"source": "https://github.com/ramsey/uuid/tree/4.5.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -5141,7 +5149,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-08-05T17:58:37+00:00"
|
||||
"time": "2022-09-16T03:22:46+00:00"
|
||||
},
|
||||
{
|
||||
"name": "rcrowe/twigbridge",
|
||||
@ -5283,16 +5291,16 @@
|
||||
},
|
||||
{
|
||||
"name": "spatie/data-transfer-object",
|
||||
"version": "3.8.1",
|
||||
"version": "3.9.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/spatie/data-transfer-object.git",
|
||||
"reference": "83c04ce0bbcb2f143782d45b5b285022fc2f8721"
|
||||
"reference": "1df0906c4e9e3aebd6c0506fd82c8b7d5548c1c8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/spatie/data-transfer-object/zipball/83c04ce0bbcb2f143782d45b5b285022fc2f8721",
|
||||
"reference": "83c04ce0bbcb2f143782d45b5b285022fc2f8721",
|
||||
"url": "https://api.github.com/repos/spatie/data-transfer-object/zipball/1df0906c4e9e3aebd6c0506fd82c8b7d5548c1c8",
|
||||
"reference": "1df0906c4e9e3aebd6c0506fd82c8b7d5548c1c8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -5330,7 +5338,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/spatie/data-transfer-object/issues",
|
||||
"source": "https://github.com/spatie/data-transfer-object/tree/3.8.1"
|
||||
"source": "https://github.com/spatie/data-transfer-object/tree/3.9.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -5342,7 +5350,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2022-06-02T20:28:47+00:00"
|
||||
"time": "2022-09-16T13:34:38+00:00"
|
||||
},
|
||||
{
|
||||
"name": "spatie/flare-client-php",
|
||||
@ -5490,27 +5498,27 @@
|
||||
},
|
||||
{
|
||||
"name": "spatie/laravel-ignition",
|
||||
"version": "1.4.1",
|
||||
"version": "1.5.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/spatie/laravel-ignition.git",
|
||||
"reference": "29deea5d9cf921590184be6956e657c4f4566440"
|
||||
"reference": "192962f4d84526f6868c512530c00633e3165749"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/29deea5d9cf921590184be6956e657c4f4566440",
|
||||
"reference": "29deea5d9cf921590184be6956e657c4f4566440",
|
||||
"url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/192962f4d84526f6868c512530c00633e3165749",
|
||||
"reference": "192962f4d84526f6868c512530c00633e3165749",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-curl": "*",
|
||||
"ext-json": "*",
|
||||
"ext-mbstring": "*",
|
||||
"illuminate/support": "^8.77|^9.0",
|
||||
"illuminate/support": "^8.77|^9.27",
|
||||
"monolog/monolog": "^2.3",
|
||||
"php": "^8.0",
|
||||
"spatie/flare-client-php": "^1.0.1",
|
||||
"spatie/ignition": "^1.2.4",
|
||||
"spatie/ignition": "^1.4.1",
|
||||
"symfony/console": "^5.0|^6.0",
|
||||
"symfony/var-dumper": "^5.0|^6.0"
|
||||
},
|
||||
@ -5576,7 +5584,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2022-09-01T11:31:14+00:00"
|
||||
"time": "2022-09-16T13:45:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "stella-maris/clock",
|
||||
@ -8030,16 +8038,16 @@
|
||||
},
|
||||
{
|
||||
"name": "tijsverkoyen/css-to-inline-styles",
|
||||
"version": "2.2.4",
|
||||
"version": "2.2.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
|
||||
"reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c"
|
||||
"reference": "4348a3a06651827a27d989ad1d13efec6bb49b19"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c",
|
||||
"reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c",
|
||||
"url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/4348a3a06651827a27d989ad1d13efec6bb49b19",
|
||||
"reference": "4348a3a06651827a27d989ad1d13efec6bb49b19",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -8077,9 +8085,9 @@
|
||||
"homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
|
||||
"support": {
|
||||
"issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
|
||||
"source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4"
|
||||
"source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.5"
|
||||
},
|
||||
"time": "2021-12-08T09:12:39+00:00"
|
||||
"time": "2022-09-12T13:28:28+00:00"
|
||||
},
|
||||
{
|
||||
"name": "twig/twig",
|
||||
|
Loading…
Reference in New Issue
Block a user