Skip to content

Commit 165e3ca

Browse files
committed
ability to set page for newly registered user for first visit
1 parent 831f713 commit 165e3ca

File tree

3 files changed

+35
-7
lines changed

3 files changed

+35
-7
lines changed

UserModule.php

+14
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class UserModule extends CWebModule
5858
public $logoutUrl = array("/user/logout");
5959
public $profileUrl = array("/user/profile");
6060
public $returnUrl = array("/user/profile");
61+
public $firstLoginReturnUrl = array("/user/profile");
6162
public $returnLogoutUrl = array("/user/login");
6263

6364
public $captchaParams = array(
@@ -281,4 +282,17 @@ public static function getUserByName($username) {
281282
public function users() {
282283
return User;
283284
}
285+
286+
/**
287+
* Return redirect url for user
288+
*
289+
* @param bool $firstLogin
290+
* @return mixed
291+
*/
292+
public static function getReturnUrl($firstLogin = true)
293+
{
294+
return ($firstLogin && isset(Yii::app()->controller->module->firstLoginReturnUrl) && !empty(Yii::app()->controller->module->firstLoginReturnUrl)) ?
295+
Yii::app()->controller->module->firstLoginReturnUrl :
296+
Yii::app()->controller->module->returnUrl;
297+
}
284298
}

controllers/LoginController.php

+18-6
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,35 @@ public function actionLogin()
1717
$model->attributes=$_POST['UserLogin'];
1818
// validate user input and redirect to previous page if valid
1919
if($model->validate()) {
20+
$returnUrl = UserModule::getReturnUrl(!$this->isUserWasLogined());
2021
$this->lastViset();
21-
if (Yii::app()->getBaseUrl()."/index.php" === Yii::app()->user->returnUrl)
22+
if (Yii::app()->getBaseUrl()."/index.php" === $returnUrl)
2223
$this->redirect(Yii::app()->controller->module->returnUrl);
2324
else
24-
$this->redirect(Yii::app()->user->returnUrl);
25+
$this->redirect($returnUrl);
2526
}
2627
}
2728
// display the login form
2829
$this->render('/user/login',array('model'=>$model));
2930
} else
3031
$this->redirect(Yii::app()->controller->module->returnUrl);
3132
}
32-
33+
3334
private function lastViset() {
34-
$lastVisit = User::model()->notsafe()->findByPk(Yii::app()->user->id);
35-
$lastVisit->lastvisit_at = date('Y-m-d H:i:s');
36-
$lastVisit->save();
35+
$user = UserModule::user();
36+
$user->lastvisit_at = date('Y-m-d H:i:s');
37+
$user->save();
3738
}
3839

40+
/**
41+
* Return if it's user's was already logged in.
42+
*
43+
* @return bool
44+
*/
45+
private function isUserWasLogined()
46+
{
47+
$user = UserModule::user();
48+
49+
return $user->lastvisit_at != '0000-00-00 00:00:00';
50+
}
3951
}

controllers/RegistrationController.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ public function actionRegistration() {
5555
$identity=new UserIdentity($model->username,$soucePassword);
5656
$identity->authenticate();
5757
Yii::app()->user->login($identity,0);
58-
$this->redirect(Yii::app()->controller->module->returnUrl);
58+
$model->lastvisit_at = date('Y-m-d H:i:s');
59+
$model->save();
60+
$this->redirect(UserModule::getReturnUrl());
5961
} else {
6062
if (!Yii::app()->controller->module->activeAfterRegister&&!Yii::app()->controller->module->sendActivationMail) {
6163
Yii::app()->user->setFlash('registration',UserModule::t("Thank you for your registration. Contact Admin to activate your account."));

0 commit comments

Comments
 (0)