Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Controllers\Auth;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use App\Http\Requests;
- use App\Http\Controllers\Controller;
- use Illuminate\Foundation\Auth\ResetsPasswords;
- use DB;
- use Hash;
- use Carbon;
- use App\User;
- use Ramsey\Uuid\Uuid;
- use Alert;
- use Mail;
- class PasswordController extends Controller
- {
- /*
- |--------------------------------------------------------------------------
- | Password Reset Controller
- |--------------------------------------------------------------------------
- |
- | This controller is responsible for handling password reset requests
- | and uses a simple trait to include this behavior. You're free to
- | explore this trait and override any methods you wish to tweak.
- |
- */
- use ResetsPasswords;
- /**
- * Create a new password controller instance.
- *
- * @return void
- */
- public function __construct()
- {
- $this->middleware('guest');
- }
- public function index()
- {
- return view('auth/forget');
- }
- public function sendPasswordResetToken(Request $request)
- {
- $user = User::where('email', $request->email)->first();
- if ( !$user ) return redirect()->back()->withErrors(['error' => '404']);
- //create a new token to be sent to the user.
- DB::table('password_resets')->insert([
- 'email' => $request->email,
- 'token' => str_random(60), //change 60 to any length you want
- 'created_at' => Carbon\Carbon::now()
- ]);
- $tokenData = DB::table('password_resets')
- ->where('email', $request->email)->first();
- $token = $tokenData->token;
- $email = $request->email; // or $email = $tokenData->email;
- $data = array(
- 'email' => $email,
- 'token' => $token,
- );
- Mail::send('mail.reset-password',$data, function($message) use ($request) {
- $message->to($request['email']);
- $message->from('no-reply@mootivo.com', 'Admin Mootivo');
- $message->subject('[MOOTIVO] Reset Password');
- });
- Alert::success('Kami mengirimkan email untuk melakukan reset password', 'Email terkirim!');
- return redirect('login');
- }
- public function showPasswordResetForm($token)
- {
- $tokenData = DB::table('password_resets')
- ->where('token', $token)->first();
- if ( !$tokenData ) return redirect()->to('home');
- return view('auth.reset')->with(
- ['token' => $token, 'email' => $tokenData->email]);
- }
- public function resetPassword(Request $request, $token)
- {
- $this->validate($request, [
- 'token' => 'required',
- 'email' => 'required|email',
- 'password' => 'required|confirmed',
- ]);
- $password = $request->password;
- $tokenData = DB::table('password_resets')
- ->where('token', $token)->first();
- $user = User::where('email', $tokenData->email)->first();
- if ( !$user ) return redirect()->to('home'); //or wherever you want
- $user->password = Hash::make($password);
- $user->update(); //or $user->save();
- //do we log the user directly or let them login and try their password for the first time ? if yes
- Auth::login($user);
- // If the user shouldn't reuse the token later, delete the token
- DB::table('password_resets')->where('email', $user->email)->delete();
- Alert::success('Selamat anda sudah kembali ke Member Area!', 'Password Berhasil Direset!');
- return redirect('dashboard');
- //redirect where we want according to whether they are logged in or not.
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement