Skip to content

Instantly share code, notes, and snippets.

@jleonardolemos
Created November 9, 2016 16:43
Show Gist options
  • Save jleonardolemos/c31a9bd82770af7c5879a7dcc408bfda to your computer and use it in GitHub Desktop.
Save jleonardolemos/c31a9bd82770af7c5879a7dcc408bfda to your computer and use it in GitHub Desktop.
<?php
namespace Diario\Frontend\Http\Controllers;
use App\Http\Controllers\Auth\PasswordController as Base;
use Illuminate\Auth\Passwords\PasswordBroker;
use Illuminate\Http\Request;
use Illuminate\Mail\Message;
use Validator;
use Session;
use Flash;
use App;
use Auth;
class PasswordController extends Base {
protected $passwordBroker;
public function __construct() {
$this->redirectPath = route('frontend.index');
$this->subject = "Resetar senha";
$this->passwordBroker = new PasswordBroker(
App::make('auth.password.tokens')
, App::make('auth')->driver()->getProvider()
, App::make('mailer')
, 'diario/frontend::frontend.emails.password-reset'
);
}
public function recoverView() {
return view("admin.recover");
}
public function postEmail(Request $request) {
//$this->validate($request, ['email' => 'required|email']);
$validator = Validator::make($request->all(), ['email' => 'required|email']);
if ($validator->fails()) {
Session::flash('modal', '.modal-forget');
pseudoFlash('danger', $validator->errors()->first());
return redirect()->back();
}
$response = $this->passwordBroker->sendResetLink($request->only('email'), function (Message $message) {
$message->subject($this->getEmailSubject());
});
pseudoFlash('success', 'Enviamos um e-mail com instruções de como alterar sua senha.');
return redirect()->back();
}
public function postReset(Request $request)
{
/*
$this->validate($request, [
'token' => 'required',
'password' => 'required|confirmed|min:6',
]);*/
$validator = Validator::make($request->all(), [
'token' => 'required',
'password' => 'required|confirmed|min:6',
]);
if ($validator->fails()) {
Session::flash('modal', '.modal-password');
pseudoFlash('danger', $validator->errors()->first());
return redirect()->back();
}
$credentials = $request->only(
'password', 'password_confirmation', 'token'
);
$credentials['email'] = $this->getEmailFromToken($credentials['token']);
$response = $this->passwordBroker->reset($credentials, function ($user, $password) {
$this->resetPassword($user, $password);
});
return redirect()->route('frontend.index');
}
protected function resetPassword($user, $password)
{
$user->password = $password;
$user->save();
pseudoFlash('success', 'Password alterado com sucesso.');
Auth::login($user);
}
protected function getEmailFromToken($token) {
return \DB::table('password_resets')->where('token', $token)->first()->email;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment