Yii2, Membuat Fitur Login As

ByYusuf Ayuba

Yii2, Membuat Fitur Login As

Yii is magic !!!, kalimat ini mungkin tepat adanya disematkan pada Yii yang memiliki berjuta kemudahan dalam pengembangan aplikasi. Diantara kemudahan-kemudahan tersebut, salah satunya adalah kemudahan dalam membuat fitu Login As disisi Admin.

Dalam aplikasi multi user, Login As sangat bermanfaat bagi para Admin dalam melakukan debug disisi client seperti client gagal login ataupun kendala-kendala teknis lainnya.

Untuk membuatnya, ikuti langkah-langkah berikut.

Aktifkan function findIdentityByAccessToken yang ada di model User seperti dibawah ini

public static function findIdentityByAccessToken($token, $type = null)
{
        return static::findOne(['auth_key' => $token, 'status' => self::STATUS_ACTIVE]);
}

Setelah itu, tambahkan function actionLoginas

public function actionLoginas($token=null)
{
        if ($token == null) {
            throw new NotFoundHttpException('The requested page does not exist.');
        }

        if (Yii::$app->user->loginByAccessToken($token)) {

            //reset token
            User::updateAll([
                'auth_key' => Yii::$app->security->generateRandomString()],
                "auth_key = '".$token."'"
            );

            return $this->goHome();
        } else {
            return $this->goBack();
        }

}

Jika menggunakan Gridview maka tambahkan button Login-as di gridview users, jika tidak cukup tambahkan tombol untuk Login as untuk masing-masing User.

'buttons' => [
    'loginas' => function($url, $model) {
         if ($model->status == 0) {
              return null;
         }
         $title = "Login As";
         $url = Url::to(['loginas', 'token' => $model->auth_key]);
         $options = [
              'title' => $title,
              'data-method' => 'post',
         ];
         $label = "<span class='glyphicon glyphicon-share' arial-hidden='true'></span>";
         return Yii::$app->user->identity->username == $model->username ?
            "<span class='glyphicon glyphicon-star' arial-hidden='true'></span>" :
            Html::a($label, $url, $options);
     }
],

Jika langkah-langkah diatas diikuti dengan baik, maka seharusnya fitur Login As yang telah dibuat dapat berfungsi dengan baik dan benar.

Sekian artikel singkat ini, semoga bermanfaat (*)

Demo

About the author

Yusuf Ayuba administrator

Leave a Reply

%d bloggers like this: