Lompat ke konten Lompat ke sidebar Lompat ke footer

Part #4 Membangun Aplikasi Ecommerce Laravel - Protect Dashboard dan Setting Password Admin

Assalamualaikum wr.wb

Bagaimana kabarnya sahabat forum koding? Semoga selalu diberi kesehatan dan kelancaran ,Aamiin

Pada kesempatan kali ini admin akan membahas mengenai Pengamanan pada Route Admin. Kita akan melindungi semua dashboard yang diperuntukan untuk admin , jadi tidak ada satupun yang sapat diakses kecuali setelah login sebagai admin. Jika teman-teman belum mengunjungi artikel sebelumnya silahkan kunjungi terlebih dahulu Part #3 Membangun Aplikasi Ecommerce Laravel - Menampilkan Pesan Error dan Fungsi Logout Admin
Disini kita mempunyai kewajiban untuk mengamalkan ilmu karena jika ilmu tidak diamalkan seperti halnya pohon yang tidak berbuah atau dapat dikatakan ilmu itu akan sia-sia. 
Ayo kita lakukan sekarang,

Langkah - langkah Melindungi Dashboard Admin

Langkah pertama kita akan pergi ke pengarahan dashboard tanpa melakukan login sebagai admin terlebih dahulu. dengan mengetikan pada url seperti dibawah ini:
127.0.0.1:8000/admin/dashboard
 Dengan menuliskan url tersebut maka kita berhasil mengakses halaman dashboard admin tampa melakukan login terlebih dahulu sebagai admin. Dan ini merupakan langkah yang salah maka kita akan perbaiki sekarang.

Kita akan membahasah dua pendekatan untuk melindungi route kita:
1). Bersama Session
2). Bersama Middleware

Dari kedua point diatas admin akan menjelaskan terlebih dahulu satu persatu, silahkan teman-teman simak pembahasn dibawah ini:
1). Bersama Session :- Pertama kita akan lakukan bersama session ... Kita akan memulai session admin pada saat login berhasil dan kemudian membandingkan variable session pada setiap function admin seperti dalam kasus ini admin mengambil contoh yaitu function pada dashboard.

Pendekatan ini merupakan pendekatan yang paling sederhana yang sering programmer lakukan dalam banyak kasus. Jadi pertama lakukan dengan cara ini.
Silahkan teman-teman buka file AdminController.php , Pada AdminController.php kita akan memodifikasi function login yang telah kita buat, kita akan menambahkan adminSession pada saat login berhasil.

Kita akan menggunakan method Session::put untuk menambahkan variable session.
Sekarang kita akan membandingkan dalam function dashboard untuk mengecek jika adminSession ada atau tidak. Jika ada kemudian kita akan melakukan tugas untuk dashboard yang telah dibuat, Jika tidak akan mengarahkan kembali ke admin login.

Mohon lihat login untuk mengakses pesan yang muncul.. kita tidak dapat mengakses halaman  dashboad dengan mudah.

Kita tambahkan script:
Session::put('adminSession',$data['email']);
 Script diatas ditambahkan pada function login. Jadi script lengkapnya pada kondisi if seperti dibawah ini:
if(Auth::attempt(['email'=>$data['email'],'password'=>$data['password'],'admin'=>'1'])){
    Session::put('adminSession',$data['email']);
    return redirect('/admin/dashboard');
    }
Dan selanjutnya pada function dashboard. tambahkan scriptnya menjadi seperti script diawah ini
public function dashboard(){
    if(Session::has('adminSession')){
    //Perform all dashboard tasks
    }else{
    return redirect('/admin-ecommerce')->with('flash_message_error','Please login to access');
    }
    return view('Admin.dashboard');
    } 
Silahkan teman-teman ketikan 127.0.0.1/admin/dashboard jika berhasil maka teman-teman akan diarahkan kembali pada form login dengan menampilkan error seperti gambar dibawah ini:
Sekarang kita akan melakukannya dengan cara kedua
2). Middleware :- Middleware merupakan cara basic yang digunakan User untuk authentication dalam Laravel. Jadi sekarang kita akan menggunakan untuk Admin authentication, teman-teman dapat mengatakannya protection
Juga, kita membutuhkan untuk membuat perubahan dalam file RedirectifAuthenticated.php Laravel dari tempat kita mengarahkankan ke form login.

Langkah pertama kita jadikan terlebih dahulu komentar script yang telah kita tambahkan tadi pada function login maupun pada function dashboard.
Silahkan buka web.php lalu ubah script dibawah ini:
Route::get('/admin/dashboard','AdminController@dashboard');
Menjadi
Route::group(['middleware' => ['auth']],function(){
Route::get('/admin/dashboard','AdminController@dashboard');
});
Kemudian buka file RedirectIfAuthenticated.php pada direktori app/http/middleware/RedirectIfAuthenticated.php. 

Kemudian tambahkan scriptnya seperti script dibawah ini:
public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/home');
        }else{
            return redirect()->action('AdminController@login')->with('flash_message_error','Please login to access');
        }
        return $next($request);
    } 
Silahkan teman-teman kembali akses dashboard admin tampa melakukan login terlebih dahulu, jika teman-teman berhasil maka akan memenculkan error yang sama seperti pada tahap satu.

Kita telah selesai membuat pengamanan pada dashboard admin, Saya harap teman-teman juga berhasil membuatnya.

Langkah - langkah Membuat Halaman Setting Admin

Pada tahap ini kita akan membuar halaman setting untuk admin panel. Dalam halaman setting, Kita akan membuat update password dimana admin dapat update password dari admin panel.

Berikut adalah tahapan-tahapannya:
1). Buatlah halaman settings.blade.php :- Pertama silahkan teman-teman buat file settings.blade.php pada folder Admin untuk filenya hampir sama dengan file dashboard.blade.php yang sudah kita buat sebelumnya.
Untuk scriptnya teman-teman dapat mencopy script dibawah ini:

@extends('layouts.adminLayout.admin_design')

@section('content')

  <div class="content-wrapper">

    <!-- Content Header (Page header) -->

    <section class="content-header">

      <h1>

        General Form Elements

        <small>Preview</small>

      </h1>

      <ol class="breadcrumb">

        <li><a href="#"><i class="fa fa-dashboard"></i> Home</a></li>

        <li><a href="#">Forms</a></li>

        <li class="active">General Elements</li>

      </ol>

    </section>

    <!-- Main content -->

    <section class="content">

      <div class="row">

        <!--/.col (left) -->

        <!-- right column -->

        <div class="col-md-12">

          <!-- Horizontal Form -->

          <div class="box box-info">

            <div class="box-header with-border">

              <h3 class="box-title">Update Password</h3>

            </div>

            <!-- /.box-header -->

            <!-- form start -->

            <form class="form-horizontal">

              <div class="box-body">

                <div class="form-group">

                  <label for="inputEmail3" class="col-sm-2 control-label">Current Password</label>

                  <div class="col-sm-10">

                    <input type="email" class="form-control" name="current_pwd" id="current_pwd" placeholder="Current Password">

                  </div>

                </div>

                <div class="form-group">

                  <label for="inputPassword3" class="col-sm-2 control-label">New Password</label>

                  <div class="col-sm-10">

                    <input type="password" class="form-control" name="new_password" id="new_password" placeholder="Password">

                  </div>

                </div>

                 <div class="form-group">

                  <label for="inputPassword3" class="col-sm-2 control-label">Confirm Password</label>

                  <div class="col-sm-10">

                    <input type="password" class="form-control" name="confirm_password" id="confirm_password" placeholder="Password">

                  </div>

                </div>

              <!-- /.box-body -->

              <div class="box-footer">

                <button type="submit" class="btn btn-info pull-right">Update Password</button>

              </div>

              <!-- /.box-footer -->

            </form>

          </div>

          <!-- /.box -->

        </div>

        <!--/.col (right) -->

      </div>

      <!-- /.row -->

    </section>

    <!-- /.content -->

  </div>

@endsection
2). Create Route :- Sekarang kita update web.php bersama route yang lainnya untuk settings.blade.php.
Route::get('/admin/settings','AdminController@settings'); 
Kita simpan script diatas pada route group yang sudah kita buat sebelumnya, untuk melindungi supaya tidak dapat diakses oleh siapa saja kecuali admin.

3). Membuat Function :- Sekarang kita akan membuat fungsi settings dalam file AdminController.php. untuk scriptnya silahkan ikuti script dibawah ini:
public function settings(){
        return view('admin.settings');
    }
Jika teman-teman berhasil menerapkannya maka akan muncul seperti tampilan dibawah ini:
 Selamat teman-teman telah berhasil mengikuti tutorialnya dengan baik.

Di tutorial selanjutnya kita akan membahas fungsi untuk mengupdate password , Mohon hubungi saya jika teman-teman menemukan kesalah atau error apapun.

Terimakasih telah membaca artikel tentang Part #4 Membangun Aplikasi Ecommerce Laravel - Protect Dashboard dan Setting Halaman Admin.

Semoga bermanfaat -- Salam Success :)

By: Muhammad Rizal Supriadi