mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
You can logout other sessions.
This commit is contained in:
parent
b83d06294d
commit
1e35f0e7e3
@ -86,6 +86,38 @@ class ProfileController extends Controller
|
||||
$this->middleware(IsDemoUser::class)->except(['index']);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function logoutOtherSessions()
|
||||
{
|
||||
//
|
||||
return view('profile.logout-other-sessions');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
*
|
||||
* @return \Illuminate\Contracts\Foundation\Application|RedirectResponse|Redirector
|
||||
*/
|
||||
public function postLogoutOtherSessions(Request $request)
|
||||
{
|
||||
$creds = [
|
||||
'email' => auth()->user()->email,
|
||||
'password' => $request->get('password'),
|
||||
];
|
||||
if (Auth::once($creds)) {
|
||||
Auth::logoutOtherDevices($request->get('password'));
|
||||
session()->flash('info', (string) trans('firefly.other_sessions_logged_out'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
}
|
||||
session()->flash('error', (string) trans('auth.failed'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Change your email address.
|
||||
*
|
||||
|
@ -44,6 +44,7 @@ use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode;
|
||||
use Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull;
|
||||
use Illuminate\Foundation\Http\Middleware\ValidatePostSize;
|
||||
use Illuminate\Routing\Middleware\ThrottleRequests;
|
||||
use Illuminate\Session\Middleware\AuthenticateSession;
|
||||
use Illuminate\View\Middleware\ShareErrorsFromSession;
|
||||
use Laravel\Passport\Http\Middleware\CreateFreshApiToken;
|
||||
use PragmaRX\Google2FALaravel\Middleware as MFAMiddleware;
|
||||
@ -90,6 +91,7 @@ class Kernel extends HttpKernel
|
||||
ShareErrorsFromSession::class,
|
||||
VerifyCsrfToken::class,
|
||||
CreateFreshApiToken::class,
|
||||
AuthenticateSession::class,
|
||||
],
|
||||
|
||||
// only the basic variable binders.
|
||||
|
@ -61,4 +61,5 @@ return [
|
||||
'telemetry_view' => 'View telemetry',
|
||||
'edit_object_group' => 'Edit group ":title"',
|
||||
'delete_object_group' => 'Delete group ":title"',
|
||||
'logout_others' => 'Logout other sessions'
|
||||
];
|
||||
|
@ -618,6 +618,7 @@ return [
|
||||
|
||||
// profile:
|
||||
'permanent_delete_stuff' => 'Be careful with these buttons. Deleting stuff is permanent.',
|
||||
'other_sessions_logged_out' => 'All other sessions have been invalidated.',
|
||||
'delete_all_budgets' => 'Delete ALL your budgets',
|
||||
'delete_all_categories' => 'Delete ALL your categories',
|
||||
'delete_all_tags' => 'Delete ALL your tags',
|
||||
@ -1138,6 +1139,7 @@ return [
|
||||
'currency' => 'Currency',
|
||||
'preferences' => 'Preferences',
|
||||
'logout' => 'Logout',
|
||||
'logout_other_sessions' => 'Logout all other sessions',
|
||||
'toggleNavigation' => 'Toggle navigation',
|
||||
'searchPlaceholder' => 'Search...',
|
||||
'version' => 'Version',
|
||||
|
@ -22,6 +22,8 @@
|
||||
<ul>
|
||||
<li><a href="{{ route('profile.change-email') }}">{{ 'change_your_email'|_ }}</a></li>
|
||||
<li><a href="{{ route('profile.change-password') }}">{{ 'change_your_password'|_ }}</a></li>
|
||||
<li><a href="{{ route('logout') }}">{{ 'logout'|_ }}</a></li>
|
||||
<li><a href="{{ route('profile.logout-others') }}">{{ 'logout_other_sessions'|_ }}</a></li>
|
||||
<li><a class="text-danger" href="{{ route('profile.delete-account') }}">{{ 'delete_account'|_ }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
35
resources/views/v1/profile/logout-other-sessions.twig
Normal file
35
resources/views/v1/profile/logout-other-sessions.twig
Normal file
@ -0,0 +1,35 @@
|
||||
{% extends "./layout/default" %}
|
||||
|
||||
{% block breadcrumbs %}
|
||||
{{ Breadcrumbs.render(Route.getCurrentRoute.getName) }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<form method="POST" action="{{ route('profile.logout-others.post') }}" accept-charset="UTF-8" class="form-horizontal">
|
||||
<input name="_token" type="hidden" value="{{ csrf_token() }}">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{{ 'logout_other_sessions'|_ }}</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="form-group">
|
||||
<label for="inputOldPassword" class="col-sm-4 control-label">{{ 'current_password'|_ }}</label>
|
||||
|
||||
<div class="col-sm-8">
|
||||
<input type="password" class="form-control" id="inputOldPassword" placeholder="{{ 'current_password'|_ }}"
|
||||
name="password">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
<button type="submit" class="btn btn-success pull-right">{{ 'logout_other_sessions'|_ }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% include 'partials.password-modal' %}
|
||||
{% endblock %}
|
@ -670,6 +670,14 @@ try {
|
||||
}
|
||||
);
|
||||
|
||||
Breadcrumbs::register(
|
||||
'profile.logout-others',
|
||||
static function (BreadcrumbsGenerator $breadcrumbs) {
|
||||
$breadcrumbs->parent('home');
|
||||
$breadcrumbs->push(trans('breadcrumbs.logout_others'), route('profile.logout-others'));
|
||||
}
|
||||
);
|
||||
|
||||
// PROFILE
|
||||
Breadcrumbs::register(
|
||||
'profile.index',
|
||||
|
@ -716,6 +716,9 @@ Route::group(
|
||||
Route::post('change-email', ['uses' => 'ProfileController@postChangeEmail', 'as' => 'change-email.post']);
|
||||
Route::post('regenerate', ['uses' => 'ProfileController@regenerate', 'as' => 'regenerate']);
|
||||
|
||||
Route::get('logout-others', ['uses' => 'ProfileController@logoutOtherSessions', 'as' => 'logout-others']);
|
||||
Route::post('logout-others', ['uses' => 'ProfileController@postLogoutOtherSessions', 'as' => 'logout-others.post']);
|
||||
|
||||
// new 2FA routes
|
||||
Route::post('enable2FA', ['uses' => 'ProfileController@enable2FA', 'as' => 'enable2FA']);
|
||||
Route::get('2fa/code', ['uses' => 'ProfileController@code', 'as' => 'code']);
|
||||
|
Loading…
Reference in New Issue
Block a user