6

Click here to load reader

Laravel bagian authentication dan login | tutorial laravel 4

Embed Size (px)

Citation preview

Page 1: Laravel bagian authentication dan login | tutorial laravel 4

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>

Page 2: Laravel bagian authentication dan login | tutorial laravel 4

<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()

Page 3: Laravel bagian authentication dan login | tutorial laravel 4

{ $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) {

Page 4: Laravel bagian authentication dan login | tutorial laravel 4

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.

Page 5: Laravel bagian authentication dan login | tutorial laravel 4

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' ));

Page 6: Laravel bagian authentication dan login | tutorial laravel 4

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.