[Risolto] User

Salve a tutti,

Ho eseguito l’installazione di yii2-app-advanced e sembra funzionare tutto correttamente.

ho configurato i parametri di accesso al DB con la pwd, ho creato nel DB la tabella user.

Vorrei provare a far andare il login ma non va.

Ma dove trovo lo Schema della tabella user, ovvero la sua struttura ?

Devo costruirmela a mano, come descritta nel model User ?




/**

 * User model

 *

 * @property integer $id

 * @property string $username

 * @property string $password_hash

 * @property string $password_reset_token

 * @property string $email

 * @property string $auth_key

 * @property integer $status

 * @property integer $created_at

 * @property integer $updated_at

 * @property string $password write-only password

 */



grazie a tutti.

La trovi in /common/models/User.php

:unsure:

In User trovo questo codice php… è corretto ?




<?php

namespace common\models;


use Yii;

use yii\base\NotSupportedException;

use yii\behaviors\TimestampBehavior;

use yii\db\ActiveRecord;

use yii\web\IdentityInterface;


/**

 * User model

 *

 * @property integer $id

 * @property string $username

 * @property string $password_hash

 * @property string $password_reset_token

 * @property string $email

 * @property string $auth_key

 * @property integer $status

 * @property integer $created_at

 * @property integer $updated_at

 * @property string $password write-only password

 */

class User extends ActiveRecord implements IdentityInterface

{

    const STATUS_DELETED = 0;

    const STATUS_ACTIVE = 10;


    /**

     * @inheritdoc

     */

    public static function tableName()

    {

        return '{{%user}}';

    }


    /**

     * @inheritdoc

     */

    public function behaviors()

    {

        return [

            TimestampBehavior::className(),

        ];

    }


    /**

     * @inheritdoc

     */

    public function rules()

    {

        return [

            ['status', 'default', 'value' => self::STATUS_ACTIVE],

            ['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],

        ];

    }


    /**

     * @inheritdoc

     */

    public static function findIdentity($id)

    {

        return static::findOne(['id' => $id, 'status' => self::STATUS_ACTIVE]);

    }


    /**

     * @inheritdoc

     */

    public static function findIdentityByAccessToken($token, $type = null)

    {

        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, 'status' => self::STATUS_ACTIVE]);

    }


    /**

     * Finds user by password reset token

     *

     * @param string $token password reset token

     * @return static|null

     */

    public static function findByPasswordResetToken($token)

    {

        if (!static::isPasswordResetTokenValid($token)) {

            return null;

        }


        return static::findOne([

            'password_reset_token' => $token,

            'status' => self::STATUS_ACTIVE,

        ]);

    }


    /**

     * Finds out if password reset token is valid

     *

     * @param string $token password reset token

     * @return boolean

     */

    public static function isPasswordResetTokenValid($token)

    {

        if (empty($token)) {

            return false;

        }


        $timestamp = (int) substr($token, strrpos($token, '_') + 1);

        $expire = Yii::$app->params['user.passwordResetTokenExpire'];

        return $timestamp + $expire >= time();

    }


    /**

     * @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 Yii::$app->security->validatePassword($password, $this->password_hash);

    }


    /**

     * Generates password hash from password and sets it to the model

     *

     * @param string $password

     */

    public function setPassword($password)

    {

        $this->password_hash = Yii::$app->security->generatePasswordHash($password);

    }


    /**

     * Generates "remember me" authentication key

     */

    public function generateAuthKey()

    {

        $this->auth_key = Yii::$app->security->generateRandomString();

    }


    /**

     * Generates new password reset token

     */

    public function generatePasswordResetToken()

    {

        $this->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time();

    }


    /**

     * Removes password reset token

     */

    public function removePasswordResetToken()

    {

        $this->password_reset_token = null;

    }

}



Se hai seguito passo-passo questa guida:

vedrai che c’è anche il comando 3. che ti fa creare la tabella su db:




3. Apply migrations with console command yii migrate.



e quel model si interfaccia a quella tabella.

grazie mille.

provo

grazie mille funziona.




./yii migrate



era da due giorni che provavo senza “./” :-[

Per una gestione avanzata degli utenti dai un’occhiata all’ottimo Yii2 User di Dektrium:

grazie infinite. provo subito.