mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-01-26 00:06:34 -06:00
New events and their handlers for user activation and other things.
This commit is contained in:
parent
08b8bd27f9
commit
3adccff611
39
app/Events/ResendConfirmation.php
Normal file
39
app/Events/ResendConfirmation.php
Normal file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* ResendConfirmation.php
|
||||
* Copyright (C) 2016 Sander Dorigo
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the MIT license. See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace FireflyIII\Events;
|
||||
|
||||
use FireflyIII\User;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
/**
|
||||
* Class ResendConfirmation
|
||||
*
|
||||
* @package FireflyIII\Events
|
||||
*/
|
||||
class ResendConfirmation extends Event
|
||||
{
|
||||
use SerializesModels;
|
||||
|
||||
public $ip;
|
||||
public $user;
|
||||
|
||||
/**
|
||||
* Create a new event instance.
|
||||
*
|
||||
* @param User $user
|
||||
*
|
||||
* @param string $ip
|
||||
*/
|
||||
public function __construct(User $user, string $ip)
|
||||
{
|
||||
$this->user = $user;
|
||||
$this->ip = $ip;
|
||||
}
|
||||
}
|
@ -27,9 +27,9 @@ class UserRegistration extends Event
|
||||
/**
|
||||
* Create a new event instance.
|
||||
*
|
||||
* @param User $user
|
||||
* @param User $user
|
||||
*
|
||||
* @return void
|
||||
* @param string $ip
|
||||
*/
|
||||
public function __construct(User $user, string $ip)
|
||||
{
|
||||
|
102
app/Handlers/Events/UserConfirmation.php
Normal file
102
app/Handlers/Events/UserConfirmation.php
Normal file
@ -0,0 +1,102 @@
|
||||
<?php
|
||||
/**
|
||||
* UserConfirmation.php
|
||||
* Copyright (C) 2016 Sander Dorigo
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the MIT license. See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace FireflyIII\Handlers\Events;
|
||||
|
||||
|
||||
use FireflyIII\Events\ResendConfirmation;
|
||||
use FireflyIII\Events\UserRegistration;
|
||||
use FireflyIII\User;
|
||||
use Illuminate\Mail\Message;
|
||||
use Log;
|
||||
use Mail;
|
||||
use Preferences;
|
||||
use Swift_TransportException;
|
||||
|
||||
/**
|
||||
* Class UserConfirmation
|
||||
*
|
||||
* @package FireflyIII\Handlers\Events
|
||||
*/
|
||||
class UserConfirmation
|
||||
{
|
||||
/**
|
||||
* Create the event listener.
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ResendConfirmation $event
|
||||
*/
|
||||
public function resendConfirmation(ResendConfirmation $event)
|
||||
{
|
||||
$user = $event->user;
|
||||
$ipAddress = $event->ip;
|
||||
$this->doConfirm($user, $ipAddress);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param UserRegistration $event
|
||||
*/
|
||||
public function sendConfirmation(UserRegistration $event)
|
||||
{
|
||||
$user = $event->user;
|
||||
$ipAddress = $event->ip;
|
||||
$this->doConfirm($user, $ipAddress);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param User $user
|
||||
* @param string $ipAddress
|
||||
*/
|
||||
private function doConfirm(User $user, string $ipAddress)
|
||||
{
|
||||
Log::debug('Trigger UserConfirmation::doConfirm');
|
||||
|
||||
// if user must confirm account, send email
|
||||
$confirmAccount = env('MUST_CONFIRM_ACCOUNT', false);
|
||||
|
||||
// otherwise, auto-confirm:
|
||||
if ($confirmAccount === false) {
|
||||
Preferences::setForUser($user, 'user_confirmed', true);
|
||||
Preferences::setForUser($user, 'user_confirmed_last_mail', 0);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// send email message:
|
||||
$email = $user->email;
|
||||
$code = str_random(16);
|
||||
$route = route('do_confirm_account', [$code]);
|
||||
|
||||
// set preferences:
|
||||
Preferences::setForUser($user, 'user_confirmed', false);
|
||||
Preferences::setForUser($user, 'user_confirmed_last_mail', time());
|
||||
Preferences::setForUser($user, 'user_confirmed_code', $code);
|
||||
|
||||
// send email.
|
||||
try {
|
||||
Mail::send(
|
||||
['emails.confirm-account-html', 'emails.confirm-account'], ['route' => $route, 'ip' => $ipAddress],
|
||||
function (Message $message) use ($email) {
|
||||
$message->to($email, $email)->subject('Please confirm your Firefly III account');
|
||||
}
|
||||
);
|
||||
} catch (Swift_TransportException $e) {
|
||||
Log::error($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -47,6 +47,10 @@ class EventServiceProvider extends ServiceProvider
|
||||
'FireflyIII\Events\UserRegistration' => [
|
||||
'FireflyIII\Handlers\Events\SendRegistrationMail',
|
||||
'FireflyIII\Handlers\Events\AttachUserRole',
|
||||
'FireflyIII\Handlers\Events\UserConfirmation@sendConfirmation',
|
||||
],
|
||||
'FireflyIII\Events\ResendConfirmation' => [
|
||||
'FireflyIII\Handlers\Events\UserConfirmation@resendConfirmation',
|
||||
],
|
||||
];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user