Tabella User

salve a tutti,

premetto che sono alle primissime armi con Yii, quindi quello che sto per chiedere potrebbe sembrare una banalità, ma per me non lo è affatto.

Dopo aver creato la mia applicazione, sono andato nel main.php della stessa, nella cartella config per creare una connessione al mio db mysql(uso xampp). Ho decommentato la parte relativa alla connessione a mysql, commentato quella a sqlite e seguito tutti gli step della guida. Apro php my admin, creo la tabella user nel db assegnato alla mia web application, e inserisco l’utente test1. Però dal form di Login della web application, continua a dirmi che è possibile loggare solo con demo/admin.

E’ normale una cosa del genere? Servono altri step prima di poter loggare con altri account?

Si, é normale; se guardi nel tuo protected/components/UserIdentity.php, troverai qualcosa di simile:


public function authenticate()

	{

		$users=array(

			// username => password

			'demo'=>'demo',

			'admin'=>'admin',

		);

		if(!isset($users[$this->username]))

			$this->errorCode=self::ERROR_USERNAME_INVALID;

		elseif($users[$this->username]!==$this->password)

			$this->errorCode=self::ERROR_PASSWORD_INVALID;

		else

			$this->errorCode=self::ERROR_NONE;

		return !$this->errorCode;

	}

quello che devi fare é sostituire questo frammento di codice con qualcosa del genere(sostituendo i nomi dei campi con quelli che hai dato tu alla tua tabella user)


private $_id;


    public function authenticate() {

        $record = User::model()->findByAttributes(array('---TuoCampo_Nome_Utente---' => $this->username));

        if ($record === null) {

            $this->_id = 'user Null';

            $this->errorCode = self::ERROR_USERNAME_INVALID;

        } else if ($record['---TuoCampo_Password_Utente---'] !== $this->password) {

            $this->_id = $this->username;

            $this->errorCode = self::ERROR_PASSWORD_INVALID;

        } else {

            $this->_id = $record['---TuoCampo_Nome_Utente---'];

            $this->setState('title', $record['---TuoCampo_Nome_Utente---']);

            $this->errorCode = self::ERROR_NONE;

        }

        return !$this->errorCode;

    }


    public function getId() {       //  override Id

        return $this->_id;

    }

Confermo che la problematica risiede lì.

Suggerisco la lettura di questa parte del tutorial blog.