Click here to load reader
Upload
raka-putra
View
21
Download
2
Embed Size (px)
Citation preview
Cara Menggunakan Package Sentry Di Framework
LaravelBagian Authentication Dan Login
Akhirnyakitasampaipada tutorial authentication and login pada sentry di framework laravel.Pada
tutorial kali inikitaakanmembahasbagaimanacaramembuat authentication dan login cartalyst
sentry di framework laravel. Padadasarnyakomponen yang perlukitapahami di tutorial
iniadalahSentry::authenticatedanhasAccess.Ingat agar lancarandamengikuti tutorial
iniandaharusmengikutidariawal tutorial sentry ini.Berikutinitampilanhalaman login yang
dibuatmenggunakan package cartalyst sentry dan framework laravel.
Pada tutorial sebelumnyakitasudahmembahasmembuat group dan user.Pada group
ketikakitatambahdanubah group kitajugamenambahataumengubahbagian permissions. Di tutorial
group untukmodulsepertimasihsayabuat manual ( daftarmoduldengan checkbox masih manual
belumdalam database, bacabagian group). Disituadabeberapamodul yang saya list User, CRUD
Query Builder dan CRUD Eloquent ORM. Lebihjelasnyalihatgambardibawahini.
Dari gambardiataskita yang akankitaujicoba di modulbagianCRUD Query Builder.
Kalaukitacentang read sajamisalmakaaplikasibisadiaksesuntukmembacasajadaftar profile.
Jikakitacentang read dan create saja, makaaplikasihanyabisamembacadanmembuat profile
barudanseterusnya.
Kita langsungpraktekansaja, buat file bernamalogin.blade.phpletakkanpada folder
app/views/sentry.Setelahitu file login.blade.phpisikandengan code dibawahini.
< !DOCTYPE html> <htmllang="en"> <head> <title>Halaman Login< /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'=> 'login')) }} < h1>Login< /h1> < p> @if(Session::has('message')) {{ Session::get('message') }} @endif {{ $errors->first('email') }} {{ $errors->first('password') }} < /p>
< p> {{ Form::label('email', 'Email') }} {{ Form::text('email',
Input::old('email'), array('class'=> 'form-control','placeholder'=>'Masukkan
Email')) }} < /p>
< p> {{ Form::label('password', 'Password') }} {{ Form::password('password',
array('class'=> 'form-control','placeholder'=>'Masukkan Password')) }} < /p>
< p>{{ Form::submit('Login', array('class'=>
'form-control')) }}< /p> {{ Form::close() }} < /div> < /div> < /div> <div class="col-lg-4 text-center">
< /div> < /div>
< /body> < /html>
// hilangkanspasisetelahtanda< agar program berjalandenganbenar Jikaselesaisimpan, selanjutnyabukaUserController.phpdidalam foldercontrollersyang
telahkitabuatsebelumnyadantambahkan function atau code dibawahini.
publicfunctionlogin() { returnView::make('sentry.login'); }
publicfunctiondoLogin()
{ $rules= array(
'email' => 'required|email', 'password'=> 'required|alphaNum|min:5' );
$validator= Validator::make(Input::all(), $rules);
if($validator->fails()) { returnRedirect::to('login') ->withErrors($validator) ->withInput(Input::except('password')); } else{
try {
$credentials= array(
'email' => Input::get('email'),
'password' => Input::get('password') );
// digunakanuntuk login $user= Sentry::authenticate($credentials, false); if($user){ returnRedirect::to('/'); }
} catch(Cartalyst\Sentry\Users\LoginRequiredException $e) { Session::flash('message', 'Login field is required.'); returnRedirect::to('login') ->withInput(Input::except('password')); } catch(Cartalyst\Sentry\Users\PasswordRequiredException $e) { Session::flash('message', 'Password field is required.'); returnRedirect::to('login') ->withInput(Input::except('password')); } catch(Cartalyst\Sentry\Users\WrongPasswordException $e) { Session::flash('message', 'Wrong password, try again.'); returnRedirect::to('login') ->withInput(Input::except('password')); } catch(Cartalyst\Sentry\Users\UserNotFoundException $e) { Session::flash('message', 'User was not found.'); returnRedirect::to('login') ->withInput(Input::except('password')); } catch(Cartalyst\Sentry\Users\UserNotActivatedException $e) {
Session::flash('message', 'User is not activated.'); returnRedirect::to('login') ->withInput(Input::except('password')); }
// The following is only required if the throttling is enabled catch(Cartalyst\Sentry\Throttling\UserSuspendedException $e) { Session::flash('message', 'User is suspended.'); returnRedirect::to('login') ->withInput(Input::except('password')); } catch(Cartalyst\Sentry\Throttling\UserBannedException $e) { Session::flash('message', 'User is banned.'); returnRedirect::to('login') ->withInput(Input::except('password')); }
} } Kemudianpada file filters.phpdi folder app tambahkan code ini.
// digunakanuntukmengecekapakah user / penggunasudah login dengabenar Route::filter('sentry_auth',function(){ if(!Sentry::check()){ returnRedirect::to('login'); } });
// digunakanuntukmengecekapakan route / url / halaman yang diakses // di user mempunyaihakuntukmengaksesnya Route::filter('hasAccess', function($route, $request, $value) { try { $user= Sentry::getUser();
if( ! $user->hasAccess($value)) { // jika user tidakmempunyaihakuntukaksesmakadikembalikankehalaman login. // inibisaandaubahke error 404 / 503 ataubahkankehalaman yang
andabuatsendiri returnRedirect::to('login'); } } catch(Cartalyst\Sentry\Users\UserNotFoundException $e) { returnRedirect::to('login'); }
}); Sekarang yang terakhirbuka fileroutes.phpdidalam folder app. Cari code
dibawahinijikamengikutidariawal tutorial.
Route::get('crud', 'CrudController@index'); Route::get('crud/create','CrudController@create'); Route::post('crud/create','CrudController@store'); Route::get('crud/edit/{id}', 'CrudController@edit'); Route::post('crud/update/{id}', array('as'=> 'crud.update', 'uses'=>
'CrudController@update')); Route::get('crud/destroy/{id}','CrudController@destroy'); Laluhapusdanubahmenjadisepertidibawahini, jikatidakmengikuti tutorial dariawalbisamenambahkan
route sepertiini.
// route digunakanuntuk login Route::get('login', array('uses'=> 'UserController@login')); Route::post('login', array('uses'=> 'UserController@doLogin')); // membuat group route dansebelummengakses route didalam group route inikita // harus login terlebihdahulu di tandaidengan code “'before' =>
'sentry_auth'” Route::group(array('before'=> 'sentry_auth'), function() {
Route::get('crud', array( // as digunakanuntukpenamaan route silahkandibacabagian route 'as'=> 'crud.index', // digunakanuntukmengecek user berhakatautidakmengakses route ini.
Lihatfucntion di filter //sebelumnya “hasAccess” dancqb.readiniadalah permissions ataukalaukitalihat
di view group bagian //checkbox ada checkbox dengannama “cqb.read”. 'before'=> 'hasAccess:cqb.read', 'uses'=> 'CrudController@index' ));
Route::get('crud/create', array( 'as'=> 'crud.create', 'before'=> 'hasAccess:cqb.create', 'uses'=> 'CrudController@create' ));
Route::post('crud/create', array( 'as'=> 'crud.store', 'before'=> 'hasAccess:cqb.create', 'uses'=> 'CrudController@store' ));
Route::get('crud/edit/{id}', array( 'as'=> 'crud.edit', 'before'=> 'hasAccess:cqb.update', 'uses'=> 'CrudController@edit' ));
Route::post('crud/update/{id}', array( 'as'=> 'crud.update', 'before'=> 'hasAccess:cqb.update', 'uses'=> 'CrudController@update' ));
Route::get('crud/destroy/{id}', array( 'as'=> 'crud.destroy', 'before'=> 'hasAccess:cqb.destroy', 'uses'=> 'CrudController@destroy' )); // route untuk logout Route::get('logout', array('uses'=> 'UserController@logout'));
}); Jikaandamengikuti tutorial inidariawal, makaandabisamenambahkan menu logout pada menu sidebar
aplikasiinidengan code dibawahini.
<li> < a href="{{ URL::to('logout') }}">< i class="fafa-fwfa-power-off">< /i>
Logout< /a> < /li>
// Hilangkanspasisetelahtanda< agar program bejalanlancar Selesaidilahkanbuat group terlebihdahulu, lalubuat user dancobajalankansertapahamiapa yang terjadi.
Jikaadakendalasilahkankomentardibawahini.Itulah tutorial caramembuat loginmenggunakancartalyst
sentry di framework laravel.