diff --git a/frontend/js/behaviors/logoutButton.js b/frontend/js/behaviors/logoutButton.js new file mode 100644 index 000000000..f9db5207e --- /dev/null +++ b/frontend/js/behaviors/logoutButton.js @@ -0,0 +1,16 @@ +// POST logout action + +const logoutButton = function () { + const logoutForm = document.querySelector('[data-logout-form]') + + if (!logoutForm) return + + document.body.addEventListener('click', e => { + if (e.target.hasAttribute('data-logout-btn')) { + e.preventDefault() + logoutForm.submit() + } + }) +} + +export default logoutButton diff --git a/frontend/js/main.js b/frontend/js/main.js index 7a3ba3e39..a13902ca6 100644 --- a/frontend/js/main.js +++ b/frontend/js/main.js @@ -4,12 +4,14 @@ import 'styles/app.scss' import Vue from 'vue' import navToggle from '@/behaviors/navToggle' import showEnvLine from '@/behaviors/showEnvLine' +import logoutButton from '@/behaviors/logoutButton' import search from '@/main-search' import merge from 'lodash/merge' const A17Init = function () { navToggle() showEnvLine() + logoutButton() } // User header dropdown diff --git a/routes/auth.php b/routes/auth.php index 9912b19f9..b08abb254 100644 --- a/routes/auth.php +++ b/routes/auth.php @@ -5,7 +5,7 @@ if (config('twill.enabled.users-management')) { Route::get('login', 'LoginController@showLoginForm')->name('login.form'); Route::post('login', 'LoginController@login')->name('login'); - Route::get('logout', 'LoginController@logout')->name('logout'); + Route::post('logout', 'LoginController@logout')->name('logout'); Route::get('password/reset', 'ForgotPasswordController@showLinkRequestForm')->name('password.reset.link'); Route::post('password/email', 'ForgotPasswordController@sendResetLinkEmail')->name('password.reset.email'); diff --git a/views/layouts/main.blade.php b/views/layouts/main.blade.php index 75069efcf..27876f16c 100644 --- a/views/layouts/main.blade.php +++ b/views/layouts/main.blade.php @@ -71,6 +71,11 @@ @include('twill::partials.footer') + +
+ @csrf +
+