Tags

, , ,

Contoh kasusnya adalah modul gii di Yii1. Walaupun kita sudah login di halaman utama, tetapi ketika masuk ke halaman gii kita harus login lagi. Kegunaannya misalnya, kita memiliki module yang sensitif yang perlu otoritas khusus untuk mengaksesnya. Dengan membuat login yang tersendiri, sedikit banyak mungkin akan meningkatkan keamanan. Untuk contoh kali ini, kita akan membuatnya untuk modul gii di Yii2. Berikut caranya.

Pertama kita buat halaman loginnya. Untuk contoh di tulisan ini, kita menggunakan halaman login yang sudah ada yaitu site/login. Buat controller di folder component

namespace app\components;

use Yii;

/**
 * LoginController
 *
 * @author Misbahul D Munir <misbahuldmunir@gmail.com>
 * @since 1.0
 */
class LoginController extends \app\controllers\SiteController
{
    public $defaultAction = 'login';

    public function getViewPath()
    {
        return Yii::$app->getViewPath() . '/site';
    }
}

Jika Anda ingin membuat halaman login yang berbeda dengan sumber data yang berbeda juga, silakan ubah class tersebut. Berikutnya adalah mengkonfigurasi modul gii.

Di file config/main-local.php ubah konfigurasi gii

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        'on beforeAction' => function($event) {
            /* @var $event \yii\base\ActionEvent */
            $user = Yii::$app->components['user'];
            Yii::$app->set('user', array_merge($user, [
                'loginUrl' => ['gii/login'],
                'idParam' => '__other_id',
                'enableAutoLogin' => false,
                'identityCookie' => ['name' => '_other_identity', 'httpOnly' => true]
            ]));
            if (Yii::$app->user->isGuest && $event->action->uniqueId != 'gii/login/login') {
                Yii::$app->user->loginRequired();
            }
        },
        'controllerMap' => [
            'login' => 'app\components\LoginController'
        ]
    ];

Cukup mudah bukan :D. Silakan dieksplore sesuai dengan kebutuhan kawan-kawan.

Advertisements