Friday, January 9, 2015

Cara Install Yii User dan Yii Rights

Manajemen user dan hak akses dalam aplikasi web sangatlah penting apalagi aplikasi web database (contoh aplikasi make-surat), kita harus menentukan user mana yang bisa akses semua modul (administrator), akses lihat saja (demo) atau akses modul tertentu sesuai kebutuhan (customize). Pada kesempatan posting kali ini saya akan membahas cara install yii extension super canggih dan super mudah untuk manajemen user dan hak akses yaitu Yii User dan Yii Rights. Kita akan install extension dalam aplikasi web make-surat, jadi kalau belum punya aplikasi-nya silahkan ikuti posting sebelumnya tentang Aplikasi Web dengan Framework Yii (1 s.d 3) secara berurutan. Sebelumnya download dahulu extension yii-user (versi saat posting yii-user-0.3-61-gfc69518.zip) dan yii-rights (versi saat posting yii-rights-1.3.0.r147.zip), kalau sudah lengkap ikuti langkah-langkah berikut ini :

  1. Extract file yii-user (yii-user-0.3-61-gfc69518.zip) dan yii-rights (yii-rights-1.3.0.r147.zip) dalam folder modules seperti gambar di bawah ini :


  2. yii user dan yii rights
    yii user dan yii rights


  3. Buka file main.php dalam folder D:\xampp\htdocs\make-surat\protected\config dan tambahkan script (di bawah //kode make-surat) seperti di bawah ini :

  4.  
    // autoloading model and component classes
    'import'=>array(
     'application.models.*',
     'application.components.*',
     //kode make-surat
     'application.modules.user.*',
     'application.modules.user.models.*',
     'application.modules.user.components.*',
     'application.modules.rights.*',
     'application.modules.rights.models.*',
     'application.modules.rights.components.*', 
    ),
    
    'modules'=>array(
     //kode make-surat
     'user'=>array(
      'tableUsers' => 'tbl_users',
      'tableProfiles' => 'tbl_profiles',
      'tableProfileFields' => 'tbl_profiles_fields',
     ),
     'rights'=>array(
     ), 
     // uncomment the following to enable the Gii tool
      
     'gii'=>array(
      'class'=>'system.gii.GiiModule',
      'password'=>'admin',
      // If removed, Gii defaults to localhost only. Edit carefully to taste.
      'ipFilters'=>array('127.0.0.1','::1'),
     ),
      
    ),
    
    // application components
    'components'=>array(
     'user'=>array(
      // enable cookie-based authentication
      'allowAutoLogin'=>true,
      //kode make-surat
      'class'=>'RWebUser',
     ),
      
     'authManager'=>array(
                   'class'=>'RDbAuthManager',
                   'defaultRoles'=>array('Authenticated', 'Guest'),
        ),
      
     // uncomment the following to enable URLs in path-format
     //kode make-surat
     'urlManager'=>array(
       'urlFormat'=>'path',
       'rules'=>array(
        '/'=>'/view',
        '//'=>'/',
        '/'=>'/',
       ),
     ),
      
     /*'db'=>array(
      'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
     ),*/
     // uncomment the following to use a MySQL database
      
     'db'=>array(
      'connectionString' => 'mysql:host=localhost;dbname=db_make_surat',
      'emulatePrepare' => true,
      'username' => 'root',
      'password' => 'password',
      'charset' => 'utf8',
      //kode make-surat
      'tablePrefix'=>'tbl_',
     ),

  5. Buka file main.php dalam folder D:\xampp\htdocs\make-surat\protected\views\layouts dan tambahkan script seperti di bawah ini :

  6. //kode make-surat
    //array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest),
    //array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest)
    array('url'=>Yii::app()->getModule('user')->loginUrl, 'label'=>Yii::app()->getModule('user')->t("Login"), 'visible'=>Yii::app()->user->isGuest),
    array('url'=>Yii::app()->getModule('user')->registrationUrl, 'label'=>Yii::app()->getModule('user')->t("Register"), 'visible'=>Yii::app()->user->isGuest),
    array('url'=>Yii::app()->getModule('user')->profileUrl, 'label'=>Yii::app()->getModule('user')->t("Profile"), 'visible'=>!Yii::app()->user->isGuest),
    array('url'=>Yii::app()->getModule('user')->logoutUrl, 'label'=>Yii::app()->getModule('user')->t("Logout").' ('.Yii::app()->user->name.')', 'visible'=>!Yii::app()->user->isGuest),
    array('label'=>'Rights', 'url'=>array('/rights'), 'visible'=>!Yii::app()->user->isGuest),
    

  7. Jalankan perintah SQL untuk membuat tabel yang digunakan oleh yii-user dalam folder D:\xampp\htdocs\make-surat\protected\modules\user\data\schema.mysql.sql dan yii-rights dalam folder D:\xampp\htdocs\make-surat\protected\modules\rights\data\schema.sql
  8. Ubah tabel tbl_users untuk nama field lastvisit menjadi lastvisit_at
  9. Jalankan perintah SQL untuk menambah data pada tabel authitem dan authassignment seperti di bawah ini :

  10.  INSERT INTO `AuthItem` (`name`, `type`, `description`, `bizrule`, `data`) 
     VALUES ('Admin', 2, 'Administrator', NULL, 'N;'), 
     ('Authenticated', 2, 'User Terdaftar', NULL, 'N;'), 
     ('Guest', 2, 'Tamu', NULL, 'N;'); 
    
     INSERT INTO `AuthAssignment` (`itemname`, `userid`, `bizrule`, `data`) 
     VALUES ('Admin', '1', NULL, 'N;'); -- Angka 1 = id username tbl_users (admin)
    

  11. Untuk menggunakan extension yii-rights ubah setiap file controller yang akan dipasang yii-rights dengan menambahkan script seperti di bawah ini (contoh D:\xampp\htdocs\make-surat\protected\controllers\JenisSuratController.php) :

  12. class JenisSuratController extends RController //kode make-surat
    {
     public $layout='//layouts/column2';
    
     public function filters()
     {
      return array(
       'rights', //kode make-surat
       //'accessControl', // perform access control for CRUD operations
       //'postOnly + delete', // we only allow deletion via POST request
      );
     }
    
     /* public function accessRules() //kode make-surat
    

  13. Kalau semua script controller sudah di ubah seperti No. 7 (JenisSuratController, KlasifikasiSuratController, SifatSuratController, SuratKeluarController, SuratMasukController dan SuratMasukDisposisiController) kemudian buka browser ketik http://localhost/make-surat/ > klik menu Login > isi Username dan Password (admin) > klik tombol Login. Alhamdulillah Yii Users berhasil di install.
  14. Selanjutnya untuk memberikan hak akses klik menu Rights > klik Permissions > klik Generate items for controller actions > di bawah Application klik modul yang akan di generate (semua controller JenisSurat.*, KlasifikasiSurat.*, SifatSurat.*, SuratKeluar.*, SuratMasuk.*, SuratMasukDisposisi.*) > klik tombol Generate
  15. Terakhir klik Assignments > klik username kolom Name (admin/ user lain) > di bawah Assign item pilih modul yang akan diberikan kepada user > klik tombol Assign. Untuk melihat perbedaan hak akses coba tambah user baru dengan hak akses berbeda. Saatnya untuk bilang Selamat Mencoba.
  16.  

Semoga Bermanfaat
Salam Edukasi dan TI
Rahmat Rahimi

No comments:

Post a Comment