Seputar Pemrograman

Cara Menggunakan Package Sentry Di Framework Laravel Bagian Reset Password atau Forgot Password User

  29 Oktober 2014     Tutorial Framework Laravel     seputarpemrograman

Pada kesempatan kali ini seputar pemrograman akan membahas reset password atau forgot paswword user. Pada tutorial sebelumnya kita sudah membahasa install, register, group, user sampai auth dan login pada cartalyst sentry di framework laravel. Untuk membuat reset password caranya sangat mudah karena sentry sendiri sudah menyediakan fungsinya. Salah satunya yaitu menggunakan getResetPasswordCode() , dimana fungsi ini akan megenerate dan mengambil reset password code didalam database. Berikut ini adalah tampilan reset password sentry di framework laravel.

reset password sentry

Langsung saja kita praktekan pertama bukan project anda, jika ingin lebih mudah anda harus mengikut tutorial ini dari awal. Jika project sudah terbuka cari file UserController.php didalam folder app/controllers. Jika sudah tambahkan fucntion / code dibawah ini.

public function reset()
{
	return View::make('sentry.reset');
}

public function doReset()
{

	try
	{
    $email = Input::get('email');	
    $user = Sentry::findUserByLogin($email);
    Session::put('sessid', $user->id);
    $resetCode = $user->getResetPasswordCode();

    Mail::send('emails.auth.reminder', array('token'=>$resetCode), function($message) use($email)
    {
        $message->from( Input::get('administrator@seputarpemrograman.com'), Input::get('seputarpemrograman') );

        $message->to($email, 'User')->subject( Input::get('Reset Password') );
    });
	}
	catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
	{
	    Session::flash('message', 'User was not found.');
	    return Redirect::to('password/reset'); 
	}    

	Session::flash('message', 'Silahkan buka email anda untuk reset password');
	return Redirect::to('login');

}	

public function validation($token)
{
	$data = 
	[
	    'token' => $token
	];
	return View::make('sentry.validation',$data);
}

public function doValidation($token)
{
	try
	{
	    $id = Session::get('sessid');
	    $user = Sentry::findUserById($id);

	    if ($user->checkResetPasswordCode($token))
	    {
	        if ($user->attemptResetPassword($token, Input::get('password')))
	        {
				return Redirect::to('/');
	        }
	        else
	        {
	            Session::flash('message', 'Reset Password Tidak Berhasil');
				return Redirect::to('validation/{token}');
	        }
	    }
	    else
	    {
	        // The provided password reset code is Invalid
	    }
	}
	catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
	{
	    Session::flash('message', 'User was not found.');
	    return Redirect::to('validation/{token}'); 
	}

}

Lalu simpan, sekarang buatlah file bernama reset.blade.php didalam folder app/views/sentry lalu isikan dengan code ini.

< !DOCTYPE html>
< html lang="en">
< head>
	< title>Halaman Reset Password< /title>
	{{ HTML::style('assets/css/bootstrap.min.css') }}
    {{ HTML::style('assets/css/sb-admin.css') }}
    {{ HTML::style('assets/font-awesome-4.1.0/css/font-awesome.min.css') }}
< /head>
< body>

	< div class="row">
                    < div class="col-lg-4 text-center">
                       
                    < /div>
                    < div class="col-lg-4 text-center">
                        < div class="panel panel-default">
                            < div class="panel-body">
                                {{ Form::open(array('url' => 'password/reset')) }}
								< p>
									@if (Session::has('message'))
							            {{ Session::get('message') }}
							        @endif
								
									{{ $errors->first('email') }}
								< /p>

								< p>
									{{ Form::label('email', 'Email') }}
									{{ Form::text('email', Input::old('email'), array('class' => 'form-control','placeholder'=>'Masukkan Email')) }}
								< /p>

								< p>{{ Form::submit('Kirim', array('class' => 'form-control')) }}< /p>
							{{ Form::close() }}
							< /div>
                        < /div>
                    
                    < /div>
                    < div class="col-lg-4 text-center">
                   
                    < /div>
    < /div>

< /body>
< /html>

// hilangkan tanda spasi setelah tanda <

Simpan, kemudian buat file sekali lagi bernama validation.blade.php didalam folder app/views/sentry lalu isi dengan code dibawah ini.

< !DOCTYPE html>
< html lang="en">
< head>
	< title>Halaman Reset Password< /title>
	{{ HTML::style('assets/css/bootstrap.min.css') }}
    {{ HTML::style('assets/css/sb-admin.css') }}
    {{ HTML::style('assets/font-awesome-4.1.0/css/font-awesome.min.css') }}
< /head>
< body>

	< div class="row">
                    < div class="col-lg-4 text-center">
                       
                    < /div>
                    < div class="col-lg-4 text-center">
                        < div class="panel panel-default">
                            < div class="panel-body">
                            	{{ Form::open(array('route' => array('check.validation', $token))) }}
                                < p>
									@if (Session::has('message'))
							            {{ Session::get('message') }}
							        @endif
								< /p>

								< p>
									{{ Form::label('password', 'Password') }}
									{{ Form::password('password', array('class' => 'form-control','placeholder'=>'Password')) }}
									{{ $errors->first('password') }}
								< /p>

								< p>
									{{ Form::label('password_confirmation', 'Konfirmasi Password') }}
									{{ Form::password('password_confirmation', array('class' => 'form-control','placeholder'=>'Konfirmasi Password')) }}
									{{ $errors->first('password_confirmation') }}
								< /p>

								< p>{{ Form::submit('Reset', array('class' => 'form-control')) }}< /p>
							{{ Form::close() }}
							< /div>
                        < /div>
                    
                    < /div>
                    < div class="col-lg-4 text-center">
                   
                    < /div>
    < /div>

< /body>
< /html>

// hilangkan tanda spasi setelah tanda <

Selesai simpan, lalu buka file login.blade.php didalam folder app/views/sentry lalu modifikasi atau tambahkan code dibawah ini dtempat yang anda suka.

< a href="{{ URL::to('password/reset') }}">Reset Password< /a>

// hilangkan tanda spasi setelah tanda <

Sekarang buka file  bernama reminder.blade.php didalam folder app/views/emails/auth. Dan rubah menjadi seperti ini.

< !DOCTYPE html>
< html lang="en-US">
	< head>
		< meta charset="utf-8">
	< /head>
	< body>
		< h2>Password Reset< /h2>

		< div>
			To reset your password, complete this form: {{ URL::to('validation', array($token)) }}.
		< /div>
	< /body>
< /html>

// hilangkan tanda spasi setelah tanda <

Untuk selanjutnya buka file routes.php didalam folder app tambahkan juga code atau route berikut ini.

Route::get('password/reset','UserController@reset');
Route::post('password/reset','UserController@doReset');

Route::get('validation/{token}', array('as' => 'validation', 'uses' => 'UserController@validation'));
Route::post('validation/{token}', array('as' => 'check.validation', 'uses' => 'UserController@doValidation'));

Yang terakhir jangan lupa cofigurasi mail.php didalam folder app/config. Jika selesai configurasi untuk mencoba silahkan klik link reset password atau bisa mengakses url dibawah ini.

http://localhost/projectlaravel/public/password/reset

Maka akan muncul form yang digunakan memasukkan email agar code reset terkirim ke email yang kita inputkan sebelumnya, berikut tampilannya.

forgot password laravel

Sedangkan tampilan halam login menjadi seperti ini.

forgot password sentry

Untuk mencoba tentunya klik link reset password lalu akan muncul seperti form diatas isikan email sesuai yang ada didalam database lalu klik tombol kirim dan cek inbox email anda. Didalam pesan email anda akan ada sebuah link lalu klik, contohnya seperti dibawah ini.

reset password sentry laravel

Jika kita klik link tersebut makan akan muncul form untuk memasukkan password baru, seperti gambar dibawah ini.

forgot password sentry laravel

Makan setelah inputkan password dengan benar akan diarahkan ke halaman utama aplikasi atau website.

Itulah cara membuat reset password atau forgot password menggunakan cartalyst sentry di framework laravel. Dan jangan lupa untuk share agar ilmunya tambah bermanfaat lagi.


comments powered by Disqus

CARI

KATEGORI PEMROGRAMAN

PEMROGRAMAN Terpopuler

PEMROGRAMAN ACAK