mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-18 02:03:40 +00:00
Fix logout for #3184
This commit is contained in:
@@ -61,6 +61,8 @@ class ProfileController extends Controller
|
||||
{
|
||||
use RequestInformation, CreateStuff;
|
||||
|
||||
protected bool $externalIdentity;
|
||||
|
||||
/**
|
||||
* ProfileController constructor.
|
||||
*
|
||||
@@ -78,6 +80,9 @@ class ProfileController extends Controller
|
||||
return $next($request);
|
||||
}
|
||||
);
|
||||
$loginProvider = config('firefly.login_provider');
|
||||
$authGuard = config('firefly.authentication_guard');
|
||||
$this->externalIdentity = 'eloquent' === $loginProvider || 'remote_user_guard' === $authGuard;
|
||||
|
||||
$this->middleware(IsDemoUser::class)->except(['index']);
|
||||
$this->middleware(IsSandStormUser::class)->except('index');
|
||||
@@ -92,13 +97,10 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function changeEmail(Request $request)
|
||||
{
|
||||
$loginProvider = config('firefly.login_provider');
|
||||
if ('eloquent' !== $loginProvider) {
|
||||
// @codeCoverageIgnoreStart
|
||||
$request->session()->flash('error', trans('firefly.login_provider_local_only', ['login_provider' => e($loginProvider)]));
|
||||
if ($this->externalIdentity) {
|
||||
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
$title = auth()->user()->email;
|
||||
@@ -118,13 +120,10 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function changePassword(Request $request)
|
||||
{
|
||||
$loginProvider = config('firefly.login_provider');
|
||||
if ('eloquent' !== $loginProvider) {
|
||||
// @codeCoverageIgnoreStart
|
||||
$request->session()->flash('error', trans('firefly.login_provider_local_only', ['login_provider' => e($loginProvider)]));
|
||||
if ($this->externalIdentity) {
|
||||
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
$title = auth()->user()->email;
|
||||
@@ -137,10 +136,17 @@ class ProfileController extends Controller
|
||||
/**
|
||||
* View that generates a 2FA code for the user.
|
||||
*
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Factory|View
|
||||
*/
|
||||
public function code()
|
||||
public function code(Request $request)
|
||||
{
|
||||
if ($this->externalIdentity) {
|
||||
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
}
|
||||
$domain = $this->getDomain();
|
||||
$secret = null;
|
||||
|
||||
@@ -192,10 +198,9 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function confirmEmailChange(UserRepositoryInterface $repository, string $token)
|
||||
{
|
||||
$loginProvider = config('firefly.login_provider');
|
||||
if ('eloquent' !== $loginProvider) {
|
||||
if ($this->externalIdentity) {
|
||||
// @codeCoverageIgnoreStart
|
||||
throw new FireflyException('Cannot confirm email change when authentication provider is not local.');
|
||||
throw new FireflyException(trans('firefly.external_user_mgt_disabled'));
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
// find preference with this token value.
|
||||
@@ -229,15 +234,14 @@ class ProfileController extends Controller
|
||||
*
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Factory|View
|
||||
* @return \Illuminate\Contracts\Foundation\Application|RedirectResponse|Redirector
|
||||
*/
|
||||
public function deleteAccount(Request $request)
|
||||
{
|
||||
$loginProvider = config('firefly.login_provider');
|
||||
if ('eloquent' !== $loginProvider) {
|
||||
// @codeCoverageIgnoreStart
|
||||
$request->session()->flash('warning', trans('firefly.delete_local_info_only', ['login_provider' => e($loginProvider)]));
|
||||
// @codeCoverageIgnoreEnd
|
||||
if ($this->externalIdentity) {
|
||||
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
}
|
||||
$title = auth()->user()->email;
|
||||
$subTitle = (string) trans('firefly.delete_account');
|
||||
@@ -251,8 +255,13 @@ class ProfileController extends Controller
|
||||
*
|
||||
* @return RedirectResponse|Redirector
|
||||
*/
|
||||
public function deleteCode()
|
||||
public function deleteCode(Request $request)
|
||||
{
|
||||
if ($this->externalIdentity) {
|
||||
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
}
|
||||
/** @var UserRepositoryInterface $repository */
|
||||
$repository = app(UserRepositoryInterface::class);
|
||||
|
||||
@@ -271,8 +280,14 @@ class ProfileController extends Controller
|
||||
*
|
||||
* @return RedirectResponse|Redirector
|
||||
*/
|
||||
public function enable2FA()
|
||||
public function enable2FA(Request $request)
|
||||
{
|
||||
if ($this->externalIdentity) {
|
||||
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
}
|
||||
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
$enabledMFA = null !== $user->mfa_secret;
|
||||
@@ -329,6 +344,12 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function newBackupCodes()
|
||||
{
|
||||
if ($this->externalIdentity) {
|
||||
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
}
|
||||
|
||||
// generate recovery codes:
|
||||
$recovery = app(Recovery::class);
|
||||
$recoveryCodes = $recovery->lowercase()
|
||||
@@ -354,13 +375,10 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function postChangeEmail(EmailFormRequest $request, UserRepositoryInterface $repository)
|
||||
{
|
||||
$loginProvider = config('firefly.login_provider');
|
||||
if ('eloquent' !== $loginProvider) {
|
||||
// @codeCoverageIgnoreStart
|
||||
$request->session()->flash('error', trans('firefly.login_provider_local_only', ['login_provider' => e($loginProvider)]));
|
||||
if ($this->externalIdentity) {
|
||||
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
/** @var User $user */
|
||||
@@ -408,13 +426,10 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function postChangePassword(ProfileFormRequest $request, UserRepositoryInterface $repository)
|
||||
{
|
||||
$loginProvider = config('firefly.login_provider');
|
||||
if ('eloquent' !== $loginProvider) {
|
||||
// @codeCoverageIgnoreStart
|
||||
$request->session()->flash('error', trans('firefly.login_provider_local_only', ['login_provider' => e($loginProvider)]));
|
||||
if ($this->externalIdentity) {
|
||||
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
// the request has already validated both new passwords must be equal.
|
||||
@@ -446,6 +461,12 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function postCode(TokenFormRequest $request)
|
||||
{
|
||||
if ($this->externalIdentity) {
|
||||
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
}
|
||||
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
/** @var UserRepositoryInterface $repository */
|
||||
@@ -485,6 +506,12 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function postDeleteAccount(UserRepositoryInterface $repository, DeleteAccountFormRequest $request)
|
||||
{
|
||||
if ($this->externalIdentity) {
|
||||
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
}
|
||||
|
||||
if (!Hash::check($request->get('password'), auth()->user()->password)) {
|
||||
session()->flash('error', (string) trans('firefly.invalid_password'));
|
||||
|
||||
@@ -506,8 +533,14 @@ class ProfileController extends Controller
|
||||
*
|
||||
* @return RedirectResponse|Redirector
|
||||
*/
|
||||
public function regenerate()
|
||||
public function regenerate(Request $request)
|
||||
{
|
||||
if ($this->externalIdentity) {
|
||||
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
|
||||
|
||||
return redirect(route('profile.index'));
|
||||
}
|
||||
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
$token = $user->generateAccessToken();
|
||||
@@ -530,11 +563,8 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function undoEmailChange(UserRepositoryInterface $repository, string $token, string $hash)
|
||||
{
|
||||
$loginProvider = config('firefly.login_provider');
|
||||
if ('eloquent' !== $loginProvider) {
|
||||
// @codeCoverageIgnoreStart
|
||||
throw new FireflyException('Cannot confirm email change when authentication provider is not local.');
|
||||
// @codeCoverageIgnoreEnd
|
||||
if ($this->externalIdentity) {
|
||||
throw new FireflyException(trans('firefly.external_user_mgt_disabled'));
|
||||
}
|
||||
|
||||
// find preference with this token value.
|
||||
|
Reference in New Issue
Block a user