Nicola, grazie del tuo aiuto, ma non ci sono ancora arrivato in fondo
La classe /common/models/User.php è quella generata automaticamente con lo skeleton avanzato
class User extends ActiveRecord implements IdentityInterface
Ora il codice dentro a /backend/controllers/SiteController.php è questo
public function actionIndex()
{
if (\Yii::$app->user->isGuest) {
return $this->render('index');
}
$user = \Yii::$app->user->getIdentity();
// is not a guest
if ($user->role == User::ROLE_ADMN) {
return $this->redirect('/admin');
} else {
return $this->render('index');
}
}
Ma questo crea lo stesso un errore:
scatenata da questa riga
if ($user->role == User::ROLE_ADMN) {
Questo però non ha senso: la classe User è definita cosi
namespace common\models;
class User extends ActiveRecord implements IdentityInterface
...
E dentro a backend/models per ora non c’è nulla.
Non capisco perchè se identity usa correttamente user, come mai poi ‘sbaglia’ il namespace…
Ho cercato nella guida, ed ho visto che \Yii::$app->user è della classe yii\web\User.
Questo è il link alla documentazione di getIdentity
Ora non ho sottomano un’installazione advanced comunque, come dici giustamente \Yii::$app->user è un istanza yii\web\User, nel file di configurazione (sia backend che frontend) dovresti avere la dichiarazione di questo componente, una cosa tipo:
identityClass indica quale classe fa da Identity per l’utente loggato (la tua /common/models/User.php), penso che tu hai un errore nella dichiarazione del componente user nei config, verifica che i tuoi webuser siano dichiarati correttamente nei config e che i namespace nei files delle classi siano corretti (e pure gli use), altro non mi viene in mente senza vedere tutta la struttura dell’app!