mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2024-12-29 10:21:25 -06:00
Rewrote all email messages.
This commit is contained in:
parent
2ba5733ebc
commit
f029f7607b
45
app/Events/RequestedNewPassword.php
Normal file
45
app/Events/RequestedNewPassword.php
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* RequestedNewPassword.php
|
||||||
|
* Copyright (C) 2016 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This software may be modified and distributed under the terms of the
|
||||||
|
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||||
|
*
|
||||||
|
* See the LICENSE file for details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types = 1);
|
||||||
|
|
||||||
|
namespace FireflyIII\Events;
|
||||||
|
|
||||||
|
use FireflyIII\User;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class RequestedNewPassword
|
||||||
|
*
|
||||||
|
* @package FireflyIII\Events
|
||||||
|
*/
|
||||||
|
class RequestedNewPassword extends Event
|
||||||
|
{
|
||||||
|
use SerializesModels;
|
||||||
|
|
||||||
|
public $ipAddress;
|
||||||
|
public $token;
|
||||||
|
public $user;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new event instance. This event is triggered when a users tries to reset his or her password.
|
||||||
|
*
|
||||||
|
* @param User $user
|
||||||
|
* @param string $token
|
||||||
|
*/
|
||||||
|
public function __construct(User $user, string $token, string $ipAddress)
|
||||||
|
{
|
||||||
|
$this->user = $user;
|
||||||
|
$this->token = $token;
|
||||||
|
$this->ipAddress = $ipAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -17,6 +17,7 @@ use Exception;
|
|||||||
use FireflyConfig;
|
use FireflyConfig;
|
||||||
use FireflyIII\Events\ConfirmedUser;
|
use FireflyIII\Events\ConfirmedUser;
|
||||||
use FireflyIII\Events\RegisteredUser;
|
use FireflyIII\Events\RegisteredUser;
|
||||||
|
use FireflyIII\Events\RequestedNewPassword;
|
||||||
use FireflyIII\Events\ResentConfirmation;
|
use FireflyIII\Events\ResentConfirmation;
|
||||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||||
use FireflyIII\User;
|
use FireflyIII\User;
|
||||||
@ -101,6 +102,33 @@ class UserEventHandler
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param RequestedNewPassword $event
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function sendNewPassword(RequestedNewPassword $event): bool
|
||||||
|
{
|
||||||
|
$email = $event->user->email;
|
||||||
|
$ipAddress = $event->ipAddress;
|
||||||
|
$token = $event->token;
|
||||||
|
|
||||||
|
$url = route('password.reset', [$token]);
|
||||||
|
|
||||||
|
// send email.
|
||||||
|
try {
|
||||||
|
Mail::send(
|
||||||
|
['emails.password-html', 'emails.password-text'], ['url' => $url, 'ip' => $ipAddress], function (Message $message) use ($email) {
|
||||||
|
$message->to($email, $email)->subject('Your password reset request');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
} catch (Swift_TransportException $e) {
|
||||||
|
Log::error($e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method will send the user a registration mail, welcoming him or her to Firefly III.
|
* 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.
|
* This message is only sent when the configuration of Firefly III says so.
|
||||||
@ -123,7 +151,7 @@ class UserEventHandler
|
|||||||
// send email.
|
// send email.
|
||||||
try {
|
try {
|
||||||
Mail::send(
|
Mail::send(
|
||||||
['emails.registered-html', 'emails.registered'], ['address' => $address, 'ip' => $ipAddress], function (Message $message) use ($email) {
|
['emails.registered-html', 'emails.registered-text'], ['address' => $address, 'ip' => $ipAddress], function (Message $message) use ($email) {
|
||||||
$message->to($email, $email)->subject('Welcome to Firefly III! ');
|
$message->to($email, $email)->subject('Welcome to Firefly III! ');
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -191,7 +219,7 @@ class UserEventHandler
|
|||||||
Preferences::setForUser($user, 'user_confirmed_code', $code);
|
Preferences::setForUser($user, 'user_confirmed_code', $code);
|
||||||
try {
|
try {
|
||||||
Mail::send(
|
Mail::send(
|
||||||
['emails.confirm-account-html', 'emails.confirm-account'], ['route' => $route, 'ip' => $ipAddress],
|
['emails.confirm-account-html', 'emails.confirm-account-text'], ['route' => $route, 'ip' => $ipAddress],
|
||||||
function (Message $message) use ($email) {
|
function (Message $message) use ($email) {
|
||||||
$message->to($email, $email)->subject('Please confirm your Firefly III account');
|
$message->to($email, $email)->subject('Please confirm your Firefly III account');
|
||||||
}
|
}
|
||||||
|
@ -188,7 +188,7 @@ class LoginController extends Controller
|
|||||||
];
|
];
|
||||||
|
|
||||||
Mail::send(
|
Mail::send(
|
||||||
['emails.blocked-login-html', 'emails.blocked-login'], $fields, function (Message $message) use ($email, $user) {
|
['emails.blocked-login-html', 'emails.blocked-login-text'], $fields, function (Message $message) use ($email, $user) {
|
||||||
$message->to($email, $email)->subject('Blocked a login attempt from ' . trim($user->email) . '.');
|
$message->to($email, $email)->subject('Blocked a login attempt from ' . trim($user->email) . '.');
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -221,7 +221,7 @@ class RegisterController extends Controller
|
|||||||
];
|
];
|
||||||
|
|
||||||
Mail::send(
|
Mail::send(
|
||||||
['emails.blocked-registration-html', 'emails.blocked-registration'], $fields, function (Message $message) use ($email, $domain) {
|
['emails.blocked-registration-html', 'emails.blocked-registration-text'], $fields, function (Message $message) use ($email, $domain) {
|
||||||
$message->to($email, $email)->subject('Blocked a registration attempt with domain ' . $domain . '.');
|
$message->to($email, $email)->subject('Blocked a registration attempt with domain ' . $domain . '.');
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -78,7 +78,7 @@ class MailError extends Job implements ShouldQueue
|
|||||||
$args['ip'] = $this->ipAddress;
|
$args['ip'] = $this->ipAddress;
|
||||||
|
|
||||||
Mail::send(
|
Mail::send(
|
||||||
['emails.error-html', 'emails.error'], $args,
|
['emails.error-html', 'emails.error-text'], $args,
|
||||||
function (Message $message) use ($email) {
|
function (Message $message) use ($email) {
|
||||||
if ($email != 'mail@example.com') {
|
if ($email != 'mail@example.com') {
|
||||||
$message->to($email, $email)->subject('Caught an error in Firely III.');
|
$message->to($email, $email)->subject('Caught an error in Firely III.');
|
||||||
|
@ -36,22 +36,25 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
protected $listen
|
protected $listen
|
||||||
= [
|
= [
|
||||||
// new event handlers:
|
// new event handlers:
|
||||||
'FireflyIII\Events\ConfirmedUser' => // is a User related event.
|
'FireflyIII\Events\ConfirmedUser' => // is a User related event.
|
||||||
[
|
[
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@storeConfirmationIpAddress',
|
'FireflyIII\Handlers\Events\UserEventHandler@storeConfirmationIpAddress',
|
||||||
],
|
],
|
||||||
'FireflyIII\Events\RegisteredUser' => // is a User related event.
|
'FireflyIII\Events\RegisteredUser' => // is a User related event.
|
||||||
[
|
[
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@sendRegistrationMail',
|
'FireflyIII\Handlers\Events\UserEventHandler@sendRegistrationMail',
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@attachUserRole',
|
'FireflyIII\Handlers\Events\UserEventHandler@attachUserRole',
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@sendConfirmationMessage',
|
'FireflyIII\Handlers\Events\UserEventHandler@sendConfirmationMessage',
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@storeRegistrationIpAddress',
|
'FireflyIII\Handlers\Events\UserEventHandler@storeRegistrationIpAddress',
|
||||||
],
|
],
|
||||||
'FireflyIII\Events\ResentConfirmation' => // is a User related event.
|
'FireflyIII\Events\RequestedNewPassword' => [ // is a User related event.
|
||||||
|
'FireflyIII\Handlers\Events\UserEventHandler@sendNewPassword',
|
||||||
|
],
|
||||||
|
'FireflyIII\Events\ResentConfirmation' => // is a User related event.
|
||||||
[
|
[
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@sendConfirmationMessageAgain',
|
'FireflyIII\Handlers\Events\UserEventHandler@sendConfirmationMessageAgain',
|
||||||
],
|
],
|
||||||
'FireflyIII\Events\StoredBudgetLimit' => // is a Budget related event.
|
'FireflyIII\Events\StoredBudgetLimit' => // is a Budget related event.
|
||||||
[
|
[
|
||||||
'FireflyIII\Handlers\Events\BudgetEventHandler@storeRepetition',
|
'FireflyIII\Handlers\Events\BudgetEventHandler@storeRepetition',
|
||||||
],
|
],
|
||||||
|
51
app/User.php
51
app/User.php
@ -14,52 +14,18 @@ declare(strict_types = 1);
|
|||||||
|
|
||||||
namespace FireflyIII;
|
namespace FireflyIII;
|
||||||
|
|
||||||
|
use FireflyIII\Events\RequestedNewPassword;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
|
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
|
||||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||||
use Illuminate\Notifications\Notifiable;
|
use Illuminate\Notifications\Notifiable;
|
||||||
|
use Request;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class User
|
* Class User
|
||||||
*
|
*
|
||||||
* @package FireflyIII
|
* @package FireflyIII
|
||||||
* @property integer $id
|
|
||||||
* @property \Carbon\Carbon $created_at
|
|
||||||
* @property \Carbon\Carbon $updated_at
|
|
||||||
* @property string $email
|
|
||||||
* @property string $password
|
|
||||||
* @property string $remember_token
|
|
||||||
* @property string $reset
|
|
||||||
* @property boolean $blocked
|
|
||||||
* @property string $blocked_code
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Account[] $accounts
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Attachment[] $attachments
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Bill[] $bills
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Budget[] $budgets
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Category[] $categories
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\ExportJob[] $exportJobs
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\ImportJob[] $importJobs
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\PiggyBank[] $piggyBanks
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Preference[] $preferences
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Role[] $roles
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\RuleGroup[] $ruleGroups
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Rule[] $rules
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Tag[] $tags
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\TransactionJournal[] $transactionJournals
|
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Transaction[] $transactions
|
|
||||||
* @property-read \Illuminate\Notifications\DatabaseNotificationCollection|\Illuminate\Notifications\DatabaseNotification[] $notifications
|
|
||||||
* @property-read \Illuminate\Notifications\DatabaseNotificationCollection|\Illuminate\Notifications\DatabaseNotification[] $unreadNotifications
|
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\User whereId($value)
|
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\User whereCreatedAt($value)
|
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\User whereUpdatedAt($value)
|
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\User whereEmail($value)
|
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\User wherePassword($value)
|
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\User whereRememberToken($value)
|
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\User whereReset($value)
|
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\User whereBlocked($value)
|
|
||||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\User whereBlockedCode($value)
|
|
||||||
* @mixin \Eloquent
|
|
||||||
*/
|
*/
|
||||||
class User extends Authenticatable
|
class User extends Authenticatable
|
||||||
{
|
{
|
||||||
@ -246,5 +212,18 @@ class User extends Authenticatable
|
|||||||
return $this->hasManyThrough('FireflyIII\Models\Transaction', 'FireflyIII\Models\TransactionJournal');
|
return $this->hasManyThrough('FireflyIII\Models\Transaction', 'FireflyIII\Models\TransactionJournal');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send the password reset notification.
|
||||||
|
*
|
||||||
|
* @param string $token
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function sendPasswordResetNotification($token)
|
||||||
|
{
|
||||||
|
$ip = Request::ip();
|
||||||
|
|
||||||
|
event(new RequestedNewPassword($this, $token, $ip));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,40 +10,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Authentication Defaults
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| This option controls the default authentication "guard" and password
|
|
||||||
| reset options for your application. You may change these defaults
|
|
||||||
| as required, but they're a perfect start for most applications.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'defaults' => [
|
'defaults' => [
|
||||||
'guard' => 'web',
|
'guard' => 'web',
|
||||||
'passwords' => 'users',
|
'passwords' => 'users',
|
||||||
],
|
],
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Authentication Guards
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Next, you may define every authentication guard for your application.
|
|
||||||
| Of course, a great default configuration has been defined for you
|
|
||||||
| here which uses session storage and the Eloquent user provider.
|
|
||||||
|
|
|
||||||
| All authentication drivers have a user provider. This defines how the
|
|
||||||
| users are actually retrieved out of your database or other storage
|
|
||||||
| mechanisms used by this application to persist your user's data.
|
|
||||||
|
|
|
||||||
| Supported: "session", "token"
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'guards' => [
|
'guards' => [
|
||||||
'web' => [
|
'web' => [
|
||||||
'driver' => 'session',
|
'driver' => 'session',
|
||||||
@ -55,55 +25,17 @@ return [
|
|||||||
'provider' => 'users',
|
'provider' => 'users',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| User Providers
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| All authentication drivers have a user provider. This defines how the
|
|
||||||
| users are actually retrieved out of your database or other storage
|
|
||||||
| mechanisms used by this application to persist your user's data.
|
|
||||||
|
|
|
||||||
| If you have multiple user tables or models you may configure multiple
|
|
||||||
| sources which represent each model / table. These sources may then
|
|
||||||
| be assigned to any extra authentication guards you have defined.
|
|
||||||
|
|
|
||||||
| Supported: "database", "eloquent"
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'providers' => [
|
'providers' => [
|
||||||
'users' => [
|
'users' => [
|
||||||
'driver' => 'eloquent',
|
'driver' => 'eloquent',
|
||||||
'model' => FireflyIII\User::class,
|
'model' => FireflyIII\User::class,
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Resetting Passwords
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Here you may set the options for resetting passwords including the view
|
|
||||||
| that is your password reset e-mail. You may also set the name of the
|
|
||||||
| table that maintains all of the reset tokens for your application.
|
|
||||||
|
|
|
||||||
| You may specify multiple password reset configurations if you have more
|
|
||||||
| than one user table or model in the application and you want to have
|
|
||||||
| separate password reset settings based on the specific user types.
|
|
||||||
|
|
|
||||||
| The expire time is the number of minutes that the reset token should be
|
|
||||||
| considered valid. This security feature keeps tokens short-lived so
|
|
||||||
| they have less time to be guessed. You may change this as needed.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'passwords' => [
|
'passwords' => [
|
||||||
'users' => [
|
'users' => [
|
||||||
'provider' => 'users',
|
'provider' => 'users',
|
||||||
'table' => 'password_resets',
|
'table' => 'password_resets',
|
||||||
'expire' => 60,
|
'expire' => 120,
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
@ -1,24 +1,8 @@
|
|||||||
<!DOCTYPE html>
|
{% include 'emails.header-html' %}
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body itemscope itemtype="http://schema.org/SoftwareApplication">
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
Hey there,
|
|
||||||
</p>
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
Firefly III has just blocked a login from user #{{ user_id }} ({{ user_address }}).
|
Firefly III has just blocked a login from user #{{ user_id }} ({{ user_address }}).
|
||||||
</p>
|
</p>
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
The blocked code was "{{ code }}".
|
The blocked code was "{{ code }}".
|
||||||
</p>
|
</p>
|
||||||
|
{% include 'emails.footer-html' %}
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:11px;color:#aaa;">
|
|
||||||
The login attempt came from IP {{ ip }}.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
Hey there,
|
{% include 'emails.header-text' %}
|
||||||
|
|
||||||
Firefly III has just blocked a login from user #{{ user_id }} ({{ user_address }}).
|
Firefly III has just blocked a login from user #{{ user_id }} ({{ user_address }}).
|
||||||
|
|
||||||
The blocked code was "{{ code }}".
|
The blocked code was "{{ code }}".
|
||||||
|
{% include 'emails.footer-text' %}
|
||||||
The login attempt came from IP {{ ip }}
|
|
@ -1,24 +1,8 @@
|
|||||||
<!DOCTYPE html>
|
{% include 'emails.header-html' %}
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body itemscope itemtype="http://schema.org/SoftwareApplication">
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
Hey there,
|
|
||||||
</p>
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
Firefly III has just blocked a registration for an email addres at domain {{ blocked_domain }}.
|
Firefly III has just blocked a registration for an email addres at domain {{ blocked_domain }}.
|
||||||
</p>
|
</p>
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
The blocked email address was "{{ email_address }}".
|
The blocked email address was "{{ email_address }}".
|
||||||
</p>
|
</p>
|
||||||
|
{% include 'emails.footer-html' %}
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:11px;color:#aaa;">
|
|
||||||
The login attempt came from IP {{ ip }}.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
Hey there,
|
{% include 'emails.header-text' %}
|
||||||
|
|
||||||
Firefly III has just blocked a registration for an email addres at domain {{ blocked_domain }}.
|
Firefly III has just blocked a registration for an email addres at domain {{ blocked_domain }}.
|
||||||
|
|
||||||
The blocked email address was "{{ email_address }}".
|
The blocked email address was "{{ email_address }}".
|
||||||
|
{% include 'emails.footer-text' %}
|
||||||
The login attempt came from IP {{ ip }}.
|
|
@ -1,25 +1,14 @@
|
|||||||
<!DOCTYPE html>
|
{% include 'emails.header-html' %}
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
Hey there!
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
To start using your brand new Firefly III account, you need to activate it. Activating your account allows the website to verify that this email address is
|
To start using your brand new Firefly III account, you need to activate it. Activating your account allows the website to verify that this email address is
|
||||||
valid. Unfortunately, not even the most complex routines can work this out, without actually sending an email message. And here it is!
|
valid. Unfortunately, not even the most complex routines can work this out, without actually sending an email message. And here it is!
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
To active your account, <a href="{{ route }}" style="color:#337ab7">click on this link</a>.
|
To active your account please follow the link below.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
If the link does not work, you can browse there manually by copy/pasting it:
|
<strong>PLEASE</strong> verify that this activation link goes to the Firefly III installation you expect it to be:
|
||||||
</p>
|
</p>
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
<a href="{{ route }}" style="color:#337ab7">{{ route }}</a>
|
<a href="{{ route }}" style="color:#337ab7">{{ route }}</a>
|
||||||
@ -28,15 +17,4 @@
|
|||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
You should be redirected to the index page right away. The link expires in about four hours.
|
You should be redirected to the index page right away. The link expires in about four hours.
|
||||||
</p>
|
</p>
|
||||||
|
{% include 'emails.footer-html' %}
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
Thank you, and enjoy!
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
James Cole
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:11px;color:#aaa;">
|
|
||||||
You are getting this activation message because a new registration from IP {{ ip }} triggered it.
|
|
||||||
</p>
|
|
@ -1,16 +1,11 @@
|
|||||||
Hey there!
|
{% include 'emails.header-text' %}
|
||||||
|
|
||||||
To start using your brand new Firefly III account, you need to activate it. Activating your account allows the website to verify that this email address is valid. Unfortunately, not even the most complex routines can work this out, without actually sending an email message. And here it is!
|
To start using your brand new Firefly III account, you need to activate it. Activating your account allows the website to verify that this email address is valid. Unfortunately, not even the most complex routines can work this out, without actually sending an email message. And here it is!
|
||||||
|
|
||||||
To active your account, you can click on the following link, or copy/paste it in your web browser:
|
To active your account please follow the link below.
|
||||||
|
|
||||||
|
PLEASE verify that this activation link goes to the Firefly III installation you expect it to be:
|
||||||
|
|
||||||
{{ route }}
|
{{ route }}
|
||||||
|
|
||||||
You should be redirected to the index page right away. The link expires in about four hours.
|
You should be redirected to the index page right away. The link expires in about four hours.
|
||||||
|
{% include 'emails.footer-text' %}
|
||||||
Thank you, and enjoy!
|
|
||||||
|
|
||||||
James Cole
|
|
||||||
|
|
||||||
|
|
||||||
You are getting this activation message because a new registration from IP {{ ip }} triggered it.
|
|
@ -1,52 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
Firefly III ran into an error: <span style="font-family: monospace;">{{ errorMessage }}</span>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
The error was of type "{{ class }}".
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
The error occured on/at: {{ time }}.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
This error occured in file <span style="font-family: monospace;">{{ file }}</span> on line {{ line }} with code {{ code }}.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
{% if loggedIn %}
|
|
||||||
The error was encountered by user #{{ user.id }}, <a href="mailto:{{ user.email }}">{{ user.email }}</a>.
|
|
||||||
{% else %}
|
|
||||||
There was no user logged in for this error or no user was detected.
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
The IP address related to this error is: {{ ip }}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
The full stacktrace is below. If you think this is a bug in Firefly III, you
|
|
||||||
can forward this message to
|
|
||||||
<a href="mailto:thegrumpydictator@gmail.com?subject=BUG!">thegrumpydictator@gmail.com</a>.
|
|
||||||
This can help fix the bug you just encountered.
|
|
||||||
</p>
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
If you prefer, you can also open a new issue on <a href="https://github.com/JC5/firefly-iii/issues/new">Github</a>.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
The full stacktrace is below:</p>
|
|
||||||
<p style="font-family: monospace;font-size:11px;color:#aaa">
|
|
||||||
{{ stacktrace|nl2br }}
|
|
||||||
</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,10 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
{% include 'emails.header-html' %}
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
Firefly III ran into an error: <span style="font-family: monospace;">{{ errorMessage }}</span>
|
Firefly III ran into an error: <span style="font-family: monospace;">{{ errorMessage }}</span>
|
||||||
</p>
|
</p>
|
||||||
@ -48,5 +42,4 @@
|
|||||||
<p style="font-family: monospace;font-size:11px;color:#aaa">
|
<p style="font-family: monospace;font-size:11px;color:#aaa">
|
||||||
{{ stacktrace|nl2br }}
|
{{ stacktrace|nl2br }}
|
||||||
</p>
|
</p>
|
||||||
</body>
|
{% include 'emails.footer-html' %}
|
||||||
</html>
|
|
@ -1,3 +1,4 @@
|
|||||||
|
{% include 'emails.header-text' %}
|
||||||
Firefly III ran into an error: {{ errorMessage }}.
|
Firefly III ran into an error: {{ errorMessage }}.
|
||||||
|
|
||||||
The error was of type "{{ class }}".
|
The error was of type "{{ class }}".
|
||||||
@ -25,3 +26,4 @@ https://github.com/JC5/firefly-iii/issues/new
|
|||||||
The full stacktrace is below:
|
The full stacktrace is below:
|
||||||
|
|
||||||
{{ stacktrace }}
|
{{ stacktrace }}
|
||||||
|
{% include 'emails.footer-text' %}
|
13
resources/views/emails/footer-html.twig
Normal file
13
resources/views/emails/footer-html.twig
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
|
Beep boop,
|
||||||
|
</p>
|
||||||
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
|
The Firefly III Mail Robot
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:11px;color:#aaa;">
|
||||||
|
PS: This message was sent because a request from IP {{ ip }} triggered it.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
6
resources/views/emails/footer-text.twig
Normal file
6
resources/views/emails/footer-text.twig
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
Beep boop,
|
||||||
|
|
||||||
|
The Firefly III Mail Robot
|
||||||
|
|
||||||
|
PS: This message was sent because a request from IP {{ ip }} triggered it.
|
10
resources/views/emails/header-html.twig
Normal file
10
resources/views/emails/header-html.twig
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
|
Hi there,
|
||||||
|
</p>
|
2
resources/views/emails/header-text.twig
Normal file
2
resources/views/emails/header-text.twig
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Hi there,
|
||||||
|
|
13
resources/views/emails/password-html.twig
Normal file
13
resources/views/emails/password-html.twig
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{% include 'emails.header-html' %}
|
||||||
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
|
Somebody tried to reset your password. If it was you, please follow the link below to do so.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
|
<strong>PLEASE</strong> verify that the link actually goes to the Firefly III you expect it to go!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
|
<a href="{{ url }}">{{ url }}</a>
|
||||||
|
</p>
|
||||||
|
{% include 'emails.footer-html' %}
|
7
resources/views/emails/password-text.twig
Normal file
7
resources/views/emails/password-text.twig
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{% include 'emails.header-text' %}
|
||||||
|
Somebody tried to reset your password. If it was you, please follow the link below to do so.
|
||||||
|
|
||||||
|
PLEASE verify that the link actually goes to the Firefly III you expect it to go!
|
||||||
|
|
||||||
|
{{ url }}
|
||||||
|
{% include 'emails.footer-text' %}
|
@ -1 +0,0 @@
|
|||||||
Click here to reset your password: {{ url('password/reset/' ~ token) }}
|
|
@ -1,14 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
{% include 'emails.header-html' %}
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
Hey there,
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
||||||
Welkome to <a style="color:#337ab7" href="{{ address }}">Firefly III</a>. Your registration has made it, and this email is here to confirm it. Yay!
|
Welkome to <a style="color:#337ab7" href="{{ address }}">Firefly III</a>. Your registration has made it, and this email is here to confirm it. Yay!
|
||||||
</p>
|
</p>
|
||||||
@ -31,17 +21,4 @@
|
|||||||
link very soon!
|
link very soon!
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
{% include 'emails.footer-html' %}
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
Enjoy!
|
|
||||||
</p>
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;">
|
|
||||||
James Cole
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:11px;color:#aaa;">
|
|
||||||
The registration has been created from IP {{ ip }}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
Hey there,
|
{% include 'emails.header-text' %}
|
||||||
|
|
||||||
Welkome to Firefly III. Your registration has made it, and this email is here to confirm it. Yay!
|
Welkome to Firefly III. Your registration has made it, and this email is here to confirm it. Yay!
|
||||||
|
|
||||||
* If you have forgotten your password already, please reset it using the password reset tool.
|
* If you have forgotten your password already, please reset it using the password reset tool.
|
||||||
@ -19,3 +18,4 @@ https://github.com/JC5/firefly-iii/wiki/First-use
|
|||||||
http://jc5.github.io/firefly-iii//description/
|
http://jc5.github.io/firefly-iii//description/
|
||||||
|
|
||||||
The registration has been created from IP {{ ip }}
|
The registration has been created from IP {{ ip }}
|
||||||
|
{% include 'emails.footer-text' %}
|
@ -25,7 +25,7 @@ Route::group(
|
|||||||
Route::post('/register', 'Auth\RegisterController@register');
|
Route::post('/register', 'Auth\RegisterController@register');
|
||||||
|
|
||||||
// Password Reset Routes...
|
// Password Reset Routes...
|
||||||
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm');
|
Route::get('password/reset/{token}', ['uses' => 'Auth\ResetPasswordController@showResetForm', 'as' => 'password.reset']);
|
||||||
Route::post('/password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');
|
Route::post('/password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');
|
||||||
Route::post('/password/reset', 'Auth\ResetPasswordController@reset');
|
Route::post('/password/reset', 'Auth\ResetPasswordController@reset');
|
||||||
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm');
|
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm');
|
||||||
|
Loading…
Reference in New Issue
Block a user