Before start the application login steps, We must have to install the application. Use the “Installing Yii2.0” tutorials to learn about “how to install the yii 2.0 advanced and basic templates application”.
Config The Database
Open the main.php under the following folder structure
//FOR ADVANCED
backend/config/main.php
OR
//FOR BASIC
config/main.php
Add the mysql database credentials in main.php file
<?php
..............
'modules' => [],
'components' => [
'db'=>[
'class'=>'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=usermanagementsystem',
'username' => 'root',
'password' => '',
'charset' => 'utf8'
],
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
],
..............
Add LoginForm.php Into Backend/Model
- Copy the login form file from “common/models/LoginForm.php” into “backend/models/LoginForm.php”
- Open “backend/models/LoginForm.php” file and change the namespace details from “namespace
common\models;” to namespace app\models; on top of the file.
Create User Model
Create the user model using “Yii code generator”
backend/models/User.php
<?php
namespace app\models;
use Yii;
/**
* This is the model class for table "tbl_user".
*
* @property string $userid
* @property string $username
* @property string $password
*/
class User extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'tbl_user';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['username', 'password'], 'required'],
[['username', 'password'], 'string', 'max' => 100]
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'userid' => 'Userid',
'username' => 'Username',
'password' => 'Password'
];
}
}
Impldements namespaces
Add the following namespaces in ‘User’ model class
use yii\base\NotSupportedException;
use yii\db\ActiveRecord;
use yii\helpers\Security;
use yii\web\IdentityInterface;
Implements the IdentityInterface interface class with ‘User’ model class
class User extends \yii\db\ActiveRecord implements IdentityInterface
Add Login Process Functions
After created ‘User.php’ model add the following functions into ‘User’ model.
Assign identityClass
Default identityClass is
“common\models\User”(for advanced application). Now we configured new identityClass class in “app\models\User” and change it in
“backend\config\main.php” file. Change enableAutoLogin value to false
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => false,
],
Change namespace in SiteController
The login functions are available in ‘SiteController.php’ and we have to change ‘LoginForm’ namespace. Find the “use
common\models\LoginForm;” and replace the “use app\models\LoginForm;”
Now you can login from database ‘user’ table for yii 2.0 applicatons.
User.php Model
<?php
namespace app\models;
use Yii;
use yii\base\NotSupportedException;
use yii\db\ActiveRecord;
use yii\helpers\Security;
use yii\web\IdentityInterface;
/**
* This is the model class for table "tbl_user".
*
* @property string $userid
* @property string $username
* @property string $password
*/
class User extends \yii\db\ActiveRecord implements IdentityInterface
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'tbl_user';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['username', 'password'], 'required'],
[['username', 'password'], 'string', 'max' => 100]
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'userid' => 'Userid',
'username' => 'Username',
'password' => 'Password'
];
}
/** INCLUDE USER LOGIN VALIDATION FUNCTIONS**/
/**
* @inheritdoc
*/
public static function findIdentity($id)
{
return static::findOne($id);
}
/**
* @inheritdoc
*/
/* modified */
public static function findIdentityByAccessToken($token, $type = null)
{
return static::findOne(['access_token' => $token]);
}
/* removed
public static function findIdentityByAccessToken($token)
{
throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.');
}
*/
/**
* Finds user by username
*
* @param string $username
* @return static|null
*/
public static function findByUsername($username)
{
return static::findOne(['username' => $username]);
}
/**
* Finds user by password reset token
*
* @param string $token password reset token
* @return static|null
*/
public static function findByPasswordResetToken($token)
{
$expire = \Yii::$app->params['user.passwordResetTokenExpire'];
$parts = explode('_', $token);
$timestamp = (int) end($parts);
if ($timestamp + $expire < time()) {
// token expired
return null;
}
return static::findOne([
'password_reset_token' => $token
]);
}
/**
* @inheritdoc
*/
public function getId()
{
return $this->getPrimaryKey();
}
/**
* @inheritdoc
*/
public function getAuthKey()
{
return $this->auth_key;
}
/**
* @inheritdoc
*/
public function validateAuthKey($authKey)
{
return $this->getAuthKey() === $authKey;
}
/**
* Validates password
*
* @param string $password password to validate
* @return boolean if password provided is valid for current user
*/
public function validatePassword($password)
{
return $this->password === sha1($password);
}
/**
* Generates password hash from password and sets it to the model
*
* @param string $password
*/
public function setPassword($password)
{
$this->password_hash = Security::generatePasswordHash($password);
}
/**
* Generates "remember me" authentication key
*/
public function generateAuthKey()
{
$this->auth_key = Security::generateRandomKey();
}
/**
* Generates new password reset token
*/
public function generatePasswordResetToken()
{
$this->password_reset_token = Security::generateRandomKey() . '_' . time();
}
/**
* Removes password reset token
*/
public function removePasswordResetToken()
{
$this->password_reset_token = null;
}
/** EXTENSION MOVIE **/
}