mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-08-29 21:52:35 +00:00
![Dan Brown](/assets/img/avatar_default.png)
Brings app auth controller handling aligned within the app, rather than having many overrides of the framwork packages causing confusion and messiness over time.
70 lines
2.1 KiB
PHP
70 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace BookStack\Http\Controllers\Auth;
|
|
|
|
use BookStack\Actions\ActivityType;
|
|
use BookStack\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Password;
|
|
|
|
class ForgotPasswordController extends Controller
|
|
{
|
|
/**
|
|
* Create a new controller instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->middleware('guest');
|
|
$this->middleware('guard:standard');
|
|
}
|
|
|
|
/**
|
|
* Display the form to request a password reset link.
|
|
*/
|
|
public function showLinkRequestForm()
|
|
{
|
|
return view('auth.passwords.email');
|
|
}
|
|
|
|
/**
|
|
* Send a reset link to the given user.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
*
|
|
* @return \Illuminate\Http\RedirectResponse
|
|
*/
|
|
public function sendResetLinkEmail(Request $request)
|
|
{
|
|
$this->validate($request, [
|
|
'email' => ['required', 'email'],
|
|
]);
|
|
|
|
// We will send the password reset link to this user. Once we have attempted
|
|
// to send the link, we will examine the response then see the message we
|
|
// need to show to the user. Finally, we'll send out a proper response.
|
|
$response = Password::broker()->sendResetLink(
|
|
$request->only('email')
|
|
);
|
|
|
|
if ($response === Password::RESET_LINK_SENT) {
|
|
$this->logActivity(ActivityType::AUTH_PASSWORD_RESET, $request->get('email'));
|
|
}
|
|
|
|
if (in_array($response, [Password::RESET_LINK_SENT, Password::INVALID_USER, Password::RESET_THROTTLED])) {
|
|
$message = trans('auth.reset_password_sent', ['email' => $request->get('email')]);
|
|
$this->showSuccessNotification($message);
|
|
|
|
return back()->with('status', trans($response));
|
|
}
|
|
|
|
// If an error was returned by the password broker, we will get this message
|
|
// translated so we can notify a user of the problem. We'll redirect back
|
|
// to where the users came from so they can attempt this process again.
|
|
return back()->withErrors(
|
|
['email' => trans($response)]
|
|
);
|
|
}
|
|
}
|