Seputar Pemrograman

Cara Menggunakan package sentry di framework laravel bagian CRUD User

  20 Oktober 2014     Tutorial Framework Laravel     seputarpemrograman

Ditutorial bagian grup package sentry digunakan untuk memberikan permission atau hak akses setiap group dan user mempunyai satu grup per user. Bagian kali ini kita akan membahas mengenai create read update dan delete user menggunakan package sentry di framework laravel. Bagian create user nanti kita akan mengisikan pada tabel users dan user_groups dimana tabel user_groups inilah tempat digunakan untuk memilih group yang telah dbuat sebelumnya. Biar tidak bingung langsung saja kita praktekan. Buka project sebelumnya jika tidak mengikuti dari awal mungkin akan bingung, jadi saya anjurkan mingikuti dari awal sejak cara install package sentry  dan dilanjutkan membuat group sentry.

Ditutorial sebelumnya kita sudah membuat controller user, bernama UserController.php lalu sekarang buat folder bernama user didalam folder app/views/sentry. Jika sudah selesai buatlah file – filer bernama index.blade.php, create.blade.php dan edit.blade.php didalam folder user  yang barusan dibuat. Sekarang silahkan dibuka file bernama UserController.php didalam folder app/controllers. Tambahkan code / function berikut ini.

public function index()
{
	$user = User::paginate(5);
	$user = 
	[
	    'user' => $user
    ];
    return View::make('sentry.user.index', $user);
}

Kemudian buka file index.blade.php didalam folder app/views/sentry/user dan isi dengan code dibawah ini.

@extends('layouts.master')
@section('content')
< div class="row">
    < div class="col-lg-12">
        < h1 class="page-header">
            Halaman 
            < small>Daftar User< /small>
        < /h1>
        @if (Session::has('message'))
            {{ Session::get('message') }}
        @endif
        < p>< a href="{{ URL::to('user/create') }}" class="btn btn-primary" role="button">Tambah User Baru< /a>< /p>
        < div class="table-responsive">
                            < table class="table table-bordered table-hover">
                                < thead>
                                    < tr>
                                        < th width="10">ID< /th>
                                        < th>Nama< /th>
                                        < th>Email< /th>
                                        < th width="147">Aksi< /th>
                                    < /tr>
                                < /thead>
                                < tbody>
                                @foreach($user as $value)
                                    < tr>
                                        < td>{{{ $value->id }}}< /td>
                                        < td>{{{ $value->first_name.' '.$value->last_name }}}< /td>
                                        < td>{{{ $value->email }}}< /td>
                                        < td>
                                            {{ Form::open(array('url' => 'user/' . $value->id)) }}
                                            < div class="btn-group">
                                            < a href="{{ URL::to('user/' . $value->id . '/edit') }}" class="btn btn-primary">Ubah< /a>
                                            {{ Form::hidden('_method', 'DELETE') }}
                                            {{Form::button('Hapus', array('type' => 'submit', 'class' => 'btn btn-primary'))}}
                                            < /div>
                                            {{ Form::close() }}
                                        < /td>
                                    < /tr>
                                @endforeach    
                                < /tbody>
                            < /table>
            < /div>
            {{$user->links()}}

    < /div>
< /div>
@stop

// agar program berjalan lancar hapus spasi setelah tanda <

Simpan, lalu untuk selanjutnya buka file routes.php didalam folder app, tambahkan code dibawah ini.

Route::resource('user', 'UserController');

Sekarang kita sudah bisa mencoba menjalankan untuk melihat daftar user, dengan mengetikan url berikut ini.

http://localhost/projectlaravel/public/user

Hasilnya akan nampak seperti gambar dibawah ini.

list user package sentry

Untuk langkah berikutnya buka file UserController.php yang berada dalam folder app/controllers. Tambahkan function atau code dibawah ini, dibawah function index.

public function create()
{
	$group = Group::lists('name', 'id');
	$data = 
	[
	    'group' => $group
	];
	return View::make('sentry.user.create',$data);
}

public function store()
{
	$rules = array(
		'nama_depan' => 'required',
		'nama_belakang' => 'required',
		'email' => 'required|email|unique:users',
        'password' => 'required|between:4,11|confirmed',
        'confirmation_password' => 'between:4,11',
        'group' => 'required',
	);

	$validator = Validator::make(Input::all(), $rules);

	if ($validator->fails()) {	
		return Redirect::to('user/create')->withErrors($validator)->withInput();
	} else {			
		
		try
		{
		    $user = Sentry::createUser(array(
		        'first_name'        => Input::get('nama_depan'),
		        'last_name' => Input::get('nama_belakang'),
		        'email' => Input::get('email'),
		        'password' => Input::get('password'),
		    	'activated' => true,
		    ));

		    $groupbyid = Sentry::findGroupById(Input::get('group'));
		    $user->addGroup($groupbyid);
		}
		catch (Cartalyst\Sentry\Users\LoginRequiredException $e)
		{
		    Session::flash('message', 'Login field is required.');
			return Redirect::to('user');
		}
		catch (Cartalyst\Sentry\Users\PasswordRequiredException $e)
		{
		    Session::flash('message', 'Password field is required.');
			return Redirect::to('user');
		}
		catch (Cartalyst\Sentry\Users\UserExistsException $e)
		{
		    Session::flash('message', 'User with this login already exists.');
			return Redirect::to('user');
		}
		catch (Cartalyst\Sentry\Groups\GroupNotFoundException $e)
		{
		    Session::flash('message', 'Group was not found.');
			return Redirect::to('user');
		}
   	Session::flash('message', 'Data Berhasil Ditambahkan');
	return Redirect::to('user');
	}
}

Jangan lupa mengganti configurasi file config.php di folder app/config/packages/cartalyst/sentry. cari code seperti ini

'hasher' => 'native',

ganti menjadi seperti dibawah ini

'hasher' => 'sha256',

Kegunaannya agar password otomatis di enksripsi.

Lalu buka file create.blade.php dan isikan code ini.

@extends('layouts.master')
@section('content')
< div class="row">
    < div class="col-lg-12">
        < h1 class="page-header">
            Halaman 
            < small>Tambah User< /small>
        < /h1>

       {{ Form::open(array('url' => 'user')) }} 
            
            < div class="form-group">
            	{{ Form::label('nama_depan', 'Nama Depan') }}
		    	{{ Form::text('nama_depan', null, array('class' => 'form-control','placeholder'=>'masukkan nama depan')) }}
                {{ '< div>'.$errors->first('nama_depan').'< /div>' }}
            < /div>
            < div class="form-group">
                {{ Form::label('nama_belakang', 'Nama Belakang') }}
                {{ Form::text('nama_belakang', null, array('class' => 'form-control','placeholder'=>'masukkan nama belakang')) }}
                {{ '< div>'.$errors->first('nama_belakang').'< /div>' }}
            < /div>
            < div class="form-group">
                {{ Form::label('email', 'Email') }}
                {{ Form::text('email', null, array('class' => 'form-control','placeholder'=>'masukkan email')) }}
                {{ '< div>'.$errors->first('email').'< /div>' }}
            < /div>
            < div class="form-group">
                {{ Form::label('password', 'Password') }}
                {{ Form::password('password', array('class' => 'form-control','placeholder'=>'masukkan password')) }}
                {{ '< div>'.$errors->first('password').'< /div>' }}
            < /div>
            < div class="form-group">
                {{ Form::label('password_confirmation', 'Password Confirmation') }}
                {{ Form::password('password_confirmation', array('class' => 'form-control','placeholder'=>'masukkan password confirmation')) }}
                {{ '< div>'.$errors->first('password_confirmation').'< /div>' }}
            < /div>
            < div class="form-group">
                {{ Form::label('group', 'Group') }}
                {{ Form::select('group', $group, null, array('class' => 'form-control', 'placeholder' => 'Select Group...')); }}
                {{ '< div>'.$errors->first('group').'< /div>' }}
            < /div>
            {{ Form::submit('SIMPAN', array('class' => 'form-control')) }}

        {{ Form::close() }}

    < /div>
< /div>
@stop

// agar program berjalan lancar hapus spasi setelah tanda <

Sekarang buat model, buka folder app/models dan buat file bernama Group.php, isikan dengan code berikut ini.

< ?php class Group extends Eloquent {

}

// agar program berjalan lancar hapus spasi setelah tanda <

Simpan, untuk menjalankan bisa klik tombol tambah user baru atau mengakses url seperti berikut ini.

http://localhost/projectlaravel/public/user/create

Hasilnya akan nampak seperti gambar dibawah ini.

create user and assign group sentry

Selanjutnya kita akan membuat form yang digunakan untuk mengubah / update data user. Buka file UserController.php tambahkan code dibawah ini, dibawah function store.

public function edit($id)
{
	$userbyid = Sentry::findUserByID($id);
	$groupbyuser = $userbyid->getGroups();
	$groupbyuser = json_decode($groupbyuser, true);
	$group = Group::lists('name', 'id');
	$data = 
	[
	    'userbyid' => $userbyid,
	    'group' => $group,
	    'groupbyuser' => $groupbyuser[0]['id']
    ];
    return View::make('sentry.user.edit', $data);
}

public function update($id)
{
	$rules = array(
		'nama_depan' => 'required',
		'nama_belakang' => 'required',
		'email' => 'required|email|unique:users,email,'. $id,  
        'password' => 'required|between:4,11|confirmed',
        'confirmation_password' => 'between:4,11',
        'group' => 'required',
	);

	$validator = Validator::make(Input::all(), $rules);

	if ($validator->fails()) {	
		return Redirect::to('user/'.$id.'/edit')->withErrors($validator)->withInput();
	} else {
		try
		{
	    $user = Sentry::findUserById($id);
	    $groupbyuser = $user->getGroups();
    	$groupbyuser = json_decode($groupbyuser, true);
	    $groupbyuser = Sentry::findGroupById($groupbyuser[0]['id']);
	    $user->removeGroup($groupbyuser);

	    $groupbyuser = Sentry::findGroupById(Input::get('group'));
	    $user->addGroup($groupbyuser);
	    
        $user->first_name        = Input::get('nama_depan');
        $user->last_name = Input::get('nama_belakang');
        $user->email = Input::get('email');
        $user->password = Input::get('password');

	    if ($user->save())
	    {
	        Session::flash('message', 'Data Berhasil Ditambahkan');
			return Redirect::to('user');
	    }
	    else
	    {
	        Session::flash('message', 'Data Gagal Ditambahkan');
			return Redirect::to('user');
	    }
		}
		catch (Cartalyst\Sentry\Users\UserExistsException $e)
		{
		    Session::flash('message', 'User with this login already exists.');
			return Redirect::to('user');
		}
		catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
		{
		    Session::flash('message', 'User was not found.');
			return Redirect::to('user');
		}
		catch (Cartalyst\Sentry\Groups\GroupNotFoundException $e)
		{
		    Session::flash('message', 'Group was not found.');
			return Redirect::to('user');
		}
	}	
}

Lalu buka file edit.blade.php yang telah dibuat sebelumnya didalam folder app/views/sentry/user lalu tambahkan code ini.

@extends('layouts.master')
@section('content')
< div class="row">
    < div class="col-lg-12">
        < h1 class="page-header">
            Halaman 
            < small>Ubah User< /small>
        < /h1>

       {{ Form::model($userbyid, array('route' => array('user.update', $userbyid->id),'method' => 'PUT')) }}
             
            < div class="form-group">
                {{ Form::label('nama_depan', 'Nama Depan') }}
                {{ Form::text('nama_depan', $userbyid->first_name, array('class' => 'form-control','placeholder'=>'masukkan nama depan')) }}
                {{ '< div>'.$errors->first('nama_depan').'< /div>' }}
            < /div>
            < div class="form-group">
                {{ Form::label('nama_belakang', 'Nama Belakang') }}
                {{ Form::text('nama_belakang', $userbyid->last_name, array('class' => 'form-control','placeholder'=>'masukkan nama belakang')) }}
                {{ '< div>'.$errors->first('nama_belakang').'< /div>' }}
            < /div>
            < div class="form-group">
                {{ Form::label('email', 'Email') }}
                {{ Form::text('email', null, array('class' => 'form-control','placeholder'=>'masukkan email')) }}
                {{ '< div>'.$errors->first('email').'< /div>' }}
            < /div>
            < div class="form-group">
                {{ Form::label('password', 'Password') }}
                {{ Form::password('password', array('class' => 'form-control','placeholder'=>'masukkan password')) }}
                {{ '< div>'.$errors->first('password').'< /div>' }}
            < /div>
            < div class="form-group">
                {{ Form::label('password_confirmation', 'Password Confirmation') }}
                {{ Form::password('password_confirmation', array('class' => 'form-control','placeholder'=>'masukkan password confirmation')) }}
                {{ '< div>'.$errors->first('password_confirmation').'< /div>' }}
            < /div>
            < div class="form-group">
                {{ Form::label('group', 'Group') }}
                {{ Form::select('group', $group, $groupbyuser, array('class' => 'form-control', 'placeholder' => 'Select Group...')); }}
                {{ '< div>'.$errors->first('group').'< /div>' }}
            < /div>
            {{ Form::submit('SIMPAN', array('class' => 'form-control')) }}

        {{ Form::close() }}

    < /div>
< /div>
@stop

// agar program berjalan lancar hapus spasi setelah tanda <

Untuk mencoba menjalakan silahkan klik tombol ubah, lalu ubah data yang diingikan dan klik simpan. Berikut hasil dari form ubah / update user menggunakan sentry.

update user and assign group sentry

Sekarang buka file UserController.php dan tambahkan code dibawah ini, dibawah function update.

public function destroy($id)
{
	try
	{
	    $user = Sentry::findUserById($id);
	    $user->delete();
	 }
	catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
	{
	    Session::flash('message', 'User was not found.');
		return Redirect::to('user');
	}
	Session::flash('message', 'Data Berhasil Dihapus');
	return Redirect::to('user');
}

Selesai untuk menjalankannya cukup klik tombol hapus.

Untuk tambahan saja, untuk menambahkan menu group dan user disidebar berikut ini codenya tambahkan di file sidebar.blade.php.

< li>< a href="{{ URL::to('group') }}"> List Group Sentry< /a>< /li>
< li>< a href="{{ URL::to('user') }}"> List User Sentry< /a>< /li>

Tutorial diatas hanya cara dasar menggunakan package cartalyst sentry untuk membuat user, mengubah user dan menghapus user serta memilih group untuk si user. Sekian tutorial package sentry untuk laravel bagian user untuk selanjutnya kita akan belajar authentication and login cartalyst sentry menggunakan framework laravel. Jika ada hal yang kurang dipahami anda bisa berkomentar dibawah ini. Dan jangan lupa di share ya kawan terimakasih.


comments powered by Disqus

CARI

KATEGORI PEMROGRAMAN

PEMROGRAMAN Terpopuler

PEMROGRAMAN ACAK