Difference between #2 and #11 of
How to login from different tables in Yii2

Changes

Title unchanged

How to login from different tables in Yii2

Category unchanged

How-tos

Yii version unchanged

2.0

Tags unchanged

authentication,login,different table name,multiple login

Content changed

The Problem: Yii2 utilizes by default UserIdentity configured in config/web.php for connection, this object apply one table to authentication ('identityClass' => 'app\painel\models\User'). How to authentication from diferent tables? Solution: Create instances in web.php to uses UserIdentify. eg:
 
```php
 
  
$user = \Yii::$app->user;   $school = \Yii::$app->school;   $teacher = \Yii::$app->teacher;
 
```
 
 
My config/web.php ```php      'user' => [              'class'=>'yii\web\User',              'identityClass' => 'app\models\User',              'enableAutoLogin' => false,              'authTimeout' => 60*30,              'loginUrl' => ['dashboard/login'],              'identityCookie' => [                  'name' => '_panelUser',             ]
 
        ],
 
        
]
 
],
 
'school'=>[              'class'=>'yii\web\User',              'identityClass' => 'app\models\SchoolUser',              'enableAutoLogin' => false,              'authTimeout' => 60*30,              'loginUrl' => ['dashboard-school/login'],              'identityCookie' => [                  'name' => '_panelSchool',             ]
 
        ],
 
        
]
 
],
 
'teacher'=> [              'class'=>'yii\web\User',              'identityClass' => 'app\models\TeacherUser',              'enableAutoLogin' => false,              'authTimeout' => 60*30,              'loginUrl' => ['dashboard-teacher/login'],          'identityCookie' => [                  'name' => '_painelTeacher',             ]
 
        
]
 
], ```
 
Note that for each there is a identifyClass and one view login.
Now, we need to create the models:
[...]
return '{{%user}}';
}
//
// to continues.... ``` Model scholol:

```php
[...]
return '{{%schoolUser}}';
}
//
// to continues

```
[...]
return '{{%teacher}}';
}
//
// to continues....

```
[...]
```php

//behaviors of the school public function behaviors() {
 
    
return [
'access' => [
'class' => AccessControl::className(),
[...]
```
To use login:

 
```php //school  \Yii::$app->scholl->login($model, $this->rememberMe ? 3600*24*30 : 0);  //teacher  \Yii::$app->teacher->login($model, $this->rememberMe ? 3600*24*30 : 0);
 
```
 
 
For restrict access in views: ```php <?php if (!\Yii::$app->scholl->isGuest):?> <h1>My scholol Name: <?=\Yii::$app->scholl->identity->name?>
<?php endif;?>
[...]
<h1>Teacher Name: <?=\Yii::$app->teacher->identity->name?>
<?php endif;?>

 
``` Always use the specific instance of the user you want to work with.
 
 
 
 
 
 
Criticism, suggestions and improvements, use the comments
 
 
[Agência Next4 Comunicação Digital Ltda.](https://www.next4.com.br/contato)
5 0
6 followers
Viewed: 64 346 times
Version: 2.0
Category: How-tos
Written by: AndroideLP
Last updated by: lenovo
Created on: Apr 3, 2018
Last updated: 4 years ago
Update Article

Revisions

View all history