Yii Framework Forum: User Module Problema Attivazione Account - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

User Module Problema Attivazione Account Rate Topic: -----

#1 User is offline   paoloc 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 08-March 13

Posted 19 March 2013 - 06:24 AM

Salve,
avrei un problema con il modulo User.
ho seguito la guida per integrarlo anche con il modulo Rights.
Funziona tutto alla perfezione tranne quando un utente si registra.
All'attivazione dell'account, quando clicco sul link inviato via mail, ricevo questo errore:
PHP notice

Trying to get property of non-object

/var/www/MioSito/protected/modules/user/components/WebUser.php(40)
28 //    }
29 
30     protected function afterLogin($fromCookie)
31     {
32         parent::afterLogin($fromCookie);
33         $this->updateSession();
34     }
35 
36     public function updateSession() {
37         $user = Yii::app()->getModule('user')->user($this->id);
38         //$user = Yii::app()->getModule('user')->user();
39         $userAttributes = CMap::mergeArray(array(
40                                                 'email'=>$user->email,
41                                                 'username'=>$user->username,
42                                                 'create_at'=>$user->create_at,
43                                                 'lastvisit_at'=>$user->lastvisit_at,
44                                            ),$user->profile->getAttributes());
45         foreach ($userAttributes as $attrName=>$attrValue) {
46             $this->setState($attrName,$attrValue);
47         }
48     }
49 
50     public function model($id=0) {
51         return Yii::app()->getModule('user')->user($id);
52     }


poi se rieseguo riclicco sul link, ottengo il messagio di attivazione dell'account ed è tutto ok, però non solo loggato.

Qualcuno può aiutarmi??

grazie anticipatamente...
0

#2 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 19 March 2013 - 06:30 AM

Che cosa succede se modifichi il metodo in :


36     public function updateSession() {
37         $user = Yii::app()->getModule('user')->user($this->id);
38         var_dump($user);
39         die;
 40    }

0

#3 User is offline   paoloc 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 08-March 13

Posted 19 March 2013 - 06:46 AM

@sensorario grazie di aver risposto cosi velocemente :)

ricevo un bel

bool(false)
0

#4 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 329
  • Joined: 10-April 12

Posted 19 March 2013 - 08:15 AM

diamo per assunto che l'attivazione avviene correttamente, visto che avviene l'updateSession.
Controllato nel db? l'utente è attivato?

qual'è il controller che gestisce l'attivazione, controllato quello che fa?
ovviamente l'errore viene generato perchè non recupera l'utente.
prova a fare un echo di $this->id
0

#5 User is offline   paoloc 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 08-March 13

Posted 19 March 2013 - 09:12 AM

View Postst4nny, on 19 March 2013 - 08:15 AM, said:

diamo per assunto che l'attivazione avviene correttamente, visto che avviene l'updateSession.
Controllato nel db? l'utente è attivato?

qual'è il controller che gestisce l'attivazione, controllato quello che fa?
ovviamente l'errore viene generato perchè non recupera l'utente.
prova a fare un echo di $this->id

grazie ancora per l'aiuto...

allora l'updateSession() me la richiama
protected/modules/user/models/User.php nella afterSave()
public function afterSave() {
        if (get_class(Yii::app())=='CWebApplication'&&Profile::$regMode==false) {
            Yii::app()->user->updateSession();
        }
        return parent::afterSave();
    }


ho controllato come mi hai chiesto e anche se mi da la notice php, praticamente la save() la fa perchè mi aggiorna lo status dell'utente ad attivato=1
0

#6 User is offline   paoloc 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 08-March 13

Posted 19 March 2013 - 09:28 AM

Dopo ore ed ore sono riuscito a capire l'arcano...
praticamente nella protected/modules/user/models/User.php non ci deve essere l'updateSession e non riesco a capire il perchè ci fosse, perchè nella versione originale del modulo non c'è.
scusate ancora...
però mi sorge una domanda, il modulo User di default come funziona dopo che l'utente esegue il link per attivarlo? é loggato oppure no? perchè cosi non è loggato.

grazie.
0

#7 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 329
  • Joined: 10-April 12

Posted 20 March 2013 - 06:33 AM

a dirti la verità nei miei model User
non esiste proprio l'afterSave .. quindi non so come mai tu abbia un problema del genere.

per quanto riguarda la tua richiesta..
In UserModule non dovrebbe esserci la possibilità di attivare quello che dici,
però guardando il codice in RegistrationController dovresti riuscire tranquillamente a modificare il tuo
ActivationController, per farlo loggare automaticamente

in particolare.. una cosa del genere:
$find = User::model()->notsafe()->findByAttributes(array('email'=>$email));
\\..dopo i check per l'attivazione
$identity=new UserIdentity($find->email,$find->password);
$identity->authenticate();
Yii::app()->user->login($identity,0);
$this->redirect(Yii::app()->controller->module->returnUrl);

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users