mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-13 07:53:16 +00:00
This commit is contained in:
17
.env.example
17
.env.example
@@ -179,11 +179,22 @@ AUTHENTICATION_GUARD=web
|
|||||||
# Some systems use X-Auth headers. In that case, use HTTP_X_AUTH_USERNAME or HTTP_X_AUTH_EMAIL
|
# Some systems use X-Auth headers. In that case, use HTTP_X_AUTH_USERNAME or HTTP_X_AUTH_EMAIL
|
||||||
# Depending on your system, REMOTE_USER may need to be changed to HTTP_REMOTE_USER
|
# Depending on your system, REMOTE_USER may need to be changed to HTTP_REMOTE_USER
|
||||||
#
|
#
|
||||||
# Firefly III won't be able to send emails when the header you use isn't an email address.
|
|
||||||
#
|
|
||||||
AUTHENTICATION_GUARD_HEADER=REMOTE_USER
|
AUTHENTICATION_GUARD_HEADER=REMOTE_USER
|
||||||
|
|
||||||
# Likewise, it's impossible to log out users who's authentication is handled by an external system.
|
#
|
||||||
|
# Firefly III uses email addresses as user identifiers. When you're using an external authentication guard
|
||||||
|
# that doesn't do this, Firefly III is incapable of emailing you. Messages sent to "Bill Gates" always fail.
|
||||||
|
#
|
||||||
|
# However, if you set this value, Firefly III will store the value from this header as the user's backup
|
||||||
|
# email address and use it to communicate. So user "Bill Gates" could still have
|
||||||
|
# the email address "bill@microsoft.com".
|
||||||
|
#
|
||||||
|
# Example value: AUTHENTICATION_GUARD_EMAIL=HTTP_X_AUTH_EMAIL
|
||||||
|
#
|
||||||
|
AUTHENTICATION_GUARD_EMAIL=
|
||||||
|
|
||||||
|
|
||||||
|
# It's impossible to log out users who's authentication is handled by an external system.
|
||||||
# Enter a custom URL here that will force a logout (your authentication provider can tell you).
|
# Enter a custom URL here that will force a logout (your authentication provider can tell you).
|
||||||
# Setting this variable only works when AUTHENTICATION_GUARD != web
|
# Setting this variable only works when AUTHENTICATION_GUARD != web
|
||||||
#
|
#
|
||||||
|
@@ -54,6 +54,12 @@ class APIEventHandler
|
|||||||
$email = $user->email;
|
$email = $user->email;
|
||||||
$ipAddress = Request::ip();
|
$ipAddress = Request::ip();
|
||||||
|
|
||||||
|
// see if user has alternative email address:
|
||||||
|
$pref = app('preferences')->getForUser($user, 'remote_guard_alt_email', null);
|
||||||
|
if (null !== $pref) {
|
||||||
|
$email = $pref->data;
|
||||||
|
}
|
||||||
|
|
||||||
Log::debug(sprintf('Now in APIEventHandler::accessTokenCreated. Email is %s, IP is %s', $email, $ipAddress));
|
Log::debug(sprintf('Now in APIEventHandler::accessTokenCreated. Email is %s, IP is %s', $email, $ipAddress));
|
||||||
try {
|
try {
|
||||||
Log::debug('Trying to send message...');
|
Log::debug('Trying to send message...');
|
||||||
|
@@ -52,6 +52,12 @@ class AdminEventHandler
|
|||||||
$email = $event->user->email;
|
$email = $event->user->email;
|
||||||
$ipAddress = $event->ipAddress;
|
$ipAddress = $event->ipAddress;
|
||||||
|
|
||||||
|
// see if user has alternative email address:
|
||||||
|
$pref = app('preferences')->getForUser($event->user, 'remote_guard_alt_email', null);
|
||||||
|
if (null !== $pref) {
|
||||||
|
$email = $pref->data;
|
||||||
|
}
|
||||||
|
|
||||||
Log::debug(sprintf('Now in sendTestMessage event handler. Email is %s, IP is %s', $email, $ipAddress));
|
Log::debug(sprintf('Now in sendTestMessage event handler. Email is %s, IP is %s', $email, $ipAddress));
|
||||||
try {
|
try {
|
||||||
Log::debug('Trying to send message...');
|
Log::debug('Trying to send message...');
|
||||||
|
@@ -56,9 +56,19 @@ class AutomationHandler
|
|||||||
$repository = app(UserRepositoryInterface::class);
|
$repository = app(UserRepositoryInterface::class);
|
||||||
$user = $repository->findNull($event->userId);
|
$user = $repository->findNull($event->userId);
|
||||||
if (null !== $user && 0 !== $event->groups->count()) {
|
if (null !== $user && 0 !== $event->groups->count()) {
|
||||||
|
|
||||||
|
$email = $user->email;
|
||||||
|
|
||||||
|
// see if user has alternative email address:
|
||||||
|
$pref = app('preferences')->getForUser($user, 'remote_guard_alt_email', null);
|
||||||
|
if (null !== $pref) {
|
||||||
|
$email = $pref->data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Log::debug('Trying to mail...');
|
Log::debug('Trying to mail...');
|
||||||
Mail::to($user->email)->send(new ReportNewJournalsMail($user->email, '127.0.0.1', $event->groups));
|
Mail::to($user->email)->send(new ReportNewJournalsMail($email, '127.0.0.1', $event->groups));
|
||||||
// @codeCoverageIgnoreStart
|
// @codeCoverageIgnoreStart
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
Log::debug('Send message failed! :(');
|
Log::debug('Send message failed! :(');
|
||||||
|
@@ -184,6 +184,12 @@ class UserEventHandler
|
|||||||
$ipAddress = $event->ipAddress;
|
$ipAddress = $event->ipAddress;
|
||||||
$list = app('preferences')->getForUser($user, 'login_ip_history', [])->data;
|
$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', null);
|
||||||
|
if (null !== $pref) {
|
||||||
|
$email = $pref->data;
|
||||||
|
}
|
||||||
|
|
||||||
/** @var array $entry */
|
/** @var array $entry */
|
||||||
foreach ($list as $index => $entry) {
|
foreach ($list as $index => $entry) {
|
||||||
if (false === $entry['notified']) {
|
if (false === $entry['notified']) {
|
||||||
@@ -300,6 +306,12 @@ class UserEventHandler
|
|||||||
$uri = route('index');
|
$uri = route('index');
|
||||||
$ipAddress = $event->ipAddress;
|
$ipAddress = $event->ipAddress;
|
||||||
|
|
||||||
|
// see if user has alternative email address:
|
||||||
|
$pref = app('preferences')->getForUser($event->user, 'remote_guard_alt_email', null);
|
||||||
|
if (null !== $pref) {
|
||||||
|
$email = $pref->data;
|
||||||
|
}
|
||||||
|
|
||||||
// send email.
|
// send email.
|
||||||
try {
|
try {
|
||||||
Mail::to($email)->send(new RegisteredUserMail($uri, $ipAddress));
|
Mail::to($email)->send(new RegisteredUserMail($uri, $ipAddress));
|
||||||
|
@@ -59,8 +59,15 @@ class HomeController extends Controller
|
|||||||
Log::channel('audit')->info('User visits admin index.');
|
Log::channel('audit')->info('User visits admin index.');
|
||||||
$title = (string) trans('firefly.administration');
|
$title = (string) trans('firefly.administration');
|
||||||
$mainTitleIcon = 'fa-hand-spock-o';
|
$mainTitleIcon = 'fa-hand-spock-o';
|
||||||
|
$email = auth()->user()->email;
|
||||||
|
$pref = app('preferences')->get('remote_guard_alt_email', null);
|
||||||
|
if(null !== $pref) {
|
||||||
|
$email = $pref->data;
|
||||||
|
}
|
||||||
|
|
||||||
return view('admin.index', compact('title', 'mainTitleIcon'));
|
|
||||||
|
|
||||||
|
return view('admin.index', compact('title', 'mainTitleIcon','email'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -147,6 +147,12 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
$email = $user->email;
|
$email = $user->email;
|
||||||
$ipAddress = Request::ip();
|
$ipAddress = Request::ip();
|
||||||
|
|
||||||
|
// see if user has alternative email address:
|
||||||
|
$pref = app('preferences')->getForUser($user, 'remote_guard_alt_email', null);
|
||||||
|
if (null !== $pref) {
|
||||||
|
$email = $pref->data;
|
||||||
|
}
|
||||||
|
|
||||||
Log::debug(sprintf('Now in EventServiceProvider::registerCreateEvents. Email is %s, IP is %s', $email, $ipAddress));
|
Log::debug(sprintf('Now in EventServiceProvider::registerCreateEvents. Email is %s, IP is %s', $email, $ipAddress));
|
||||||
try {
|
try {
|
||||||
Log::debug('Trying to send message...');
|
Log::debug('Trying to send message...');
|
||||||
|
@@ -78,6 +78,15 @@ class RemoteUserGuard implements Guard
|
|||||||
/** @var User $user */
|
/** @var User $user */
|
||||||
$user = $this->provider->retrieveById($userID);
|
$user = $this->provider->retrieveById($userID);
|
||||||
|
|
||||||
|
// store email address if present in header and not already set.
|
||||||
|
$header = config('auth.guard_email');
|
||||||
|
$emailAddress = request()->server($header) ?? null;
|
||||||
|
$preference = app('preferences')->getForUser($user, 'remote_guard_alt_email', null);
|
||||||
|
|
||||||
|
if (null !== $emailAddress && null === $preference && $emailAddress !== $userID) {
|
||||||
|
app('preferences')->setForUser($user, 'remote_guard_alt_email', $emailAddress);
|
||||||
|
}
|
||||||
|
|
||||||
Log::debug(sprintf('Result of getting user from provider: %s', $user->email));
|
Log::debug(sprintf('Result of getting user from provider: %s', $user->email));
|
||||||
$this->user = $user;
|
$this->user = $user;
|
||||||
}
|
}
|
||||||
|
@@ -38,6 +38,7 @@ return [
|
|||||||
'passwords' => 'users',
|
'passwords' => 'users',
|
||||||
],
|
],
|
||||||
'guard_header' => envNonEmpty('AUTHENTICATION_GUARD_HEADER', 'REMOTE_USER'),
|
'guard_header' => envNonEmpty('AUTHENTICATION_GUARD_HEADER', 'REMOTE_USER'),
|
||||||
|
'guard_email' => envNonEmpty('AUTHENTICATION_GUARD_EMAIL', null),
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
@@ -40,7 +40,7 @@
|
|||||||
<form action="{{ route('admin.test-message') }}" method="post">
|
<form action="{{ route('admin.test-message') }}" method="post">
|
||||||
<div class="box-body">
|
<div class="box-body">
|
||||||
<p>
|
<p>
|
||||||
{{ trans('firefly.send_test_email_text', {email:Auth.user.email})|raw }}
|
{{ trans('firefly.send_test_email_text', {email:email})|raw }}
|
||||||
</p>
|
</p>
|
||||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||||
</div>
|
</div>
|
||||||
|
Reference in New Issue
Block a user