Yii2: Agreement After Login with Session

agreement

Tutorial sederhana ini cuman ngasih contoh gimana caranya mbikin halaman persetujuan yang hanya muncul sekali
setelah login. Bahwa default action dan controller dari Yii adalah SiteController action index atau url site/index,
karena itu kita fokus aja ngoprek ituh action..

Untuk melakukan hal simple ini kita bisa menggunakan session.. session di Yii
Guidenya ada disini : http://www.yiiframework.com/doc-2.0/guide-runtime-sessions-cookies.html

Pertama,

Modify actionIndex pada `controllers/SiteController.php`, dimana by default akan merender view index, namun disini kita check dulu apakah user yang baru saja login setuju dengan TOS (term on service). Jika belum ada persetujuan maka akan diredirect ke actionTos

public function actionIndex()
{
	$session = Yii::$app->session;
	$result = $session->get('tos');
	if($result !== 'agree') return $this->redirect(['tos']);	
	
	return $this->render('index');	
}

Kedua,

Kita bikin actionTos, dengan 3 kondisi
1. Jika parameter action kosong maka halaman view tos di render.
2. Jika parameter actionnya berisi `agree` maka lakukan set session tos = agree
3. Diluar itu maka user dianggap tidak setuju dengan TOS, maka waktunya lempar dia keluar

public function actionTos($action="")
{
	if($action==""){
		return $this->render("tos");
	}
	else if($action=="agree"){
		$session = Yii::$app->session;
		$session->set('tos', 'agree');
		return $this->goHome();			
	}
	else{
		Yii::$app->user->logout();
		return $this->goHome();
	}
} 

Ketiga,

Kita bikin view `site/tos.php` yang isinya Term Of Service..

<p>
<?= Html::a('&laquo; Tidak Setuju', ['tos','action'=>'disagree'], ['class' => 'btn btn-danger']) ?>
<?= Html::a('&laquo; Setuju', ['tos','action'=>'agree'], ['class' => 'btn btn-primary']) ?>
</p>

Done

#Silahkan jika mau request tutorial..

Tags:
3 Comments
  1. Paulus
  2. Fajar Surahman

Leave a Reply

Your email address will not be published. Required fields are marked *