[Solar-talk] Verifying Login Status

Sean Montague scene at themountainscene.com
Thu Feb 7 09:05:30 CST 2008


Thanks for all the responses. It turns out that I was populating the 
$config['Solar_Auth'] array with the wrong name, $config['Solar_Sql']. 
Thanks Raymond for linking to you config file. And Antti, placing the 
setup function in my Vendor_App_Base works great. Things are starting to 
click. Thanks!

Sean

Antti Holvikari wrote:
> On Feb 7, 2008 12:52 AM, Sean Montague <scene at themountainscene.com> wrote:
>   
>>  Thanks Rodrigo,
>>
>>  You say that it would be better to set the auth adapter configuration in
>> the config file. Which makes sense to me, so now I'm trying to figure out
>> the best way to do this. My modified Solar.config.php looks like this:
>>
>>      $config['Solar_Sql'] = array(
>>          'adapter' => 'Solar_Sql_Adapter_Mysql',
>>          'host'    => 'localhost',
>>          'user'    => 'root',
>>          'pass'    => 'mypass',
>>          'name'    => 'mydb'
>>      );
>>
>>      $sql = Solar::factory('Solar_Sql', $config['Solar_Sql']);
>>      $config['Solar_Sql'] = array(
>>          'sql'           => $sql,
>>          'adapter'       => 'Solar_Auth_Adapter_Sql',
>>          'table'         => 'users',
>>          'handle_col'    => 'username',
>>          'passwd_col'    => 'password',
>>          'uid_col'       => 'id',
>>          'process_login' => 'submit login'
>>      );
>>      ...
>>
>>  My Login.php is looks like:
>>
>>      $sql = solar::factory('solar_sql');
>>      $sql->_config['adapter'] = 'Solar_Auth_Adapter_Sql';
>>      $auth = Solar::factory('Solar_Auth', $sql->_config);
>>      $auth->start();
>>      ....
>>     
>
> Make sure $auth->start() gets called in *every* request. What you
> should do is register a user object in your _setup() method within
> your app class.
>
>     protected function _setup()
>     {
>         // register a Solar_Sql object if not already
>         if (! Solar_Registry::exists('sql')) {
>             Solar_Registry::set('sql', Solar::factory('Solar_Sql'));
>         }
>
>         // register a Solar_User object if not already.
>         // this will trigger the authentication process.
>         if (! Solar_Registry::exists('user')) {
>             Solar_Registry::set('user', Solar::factory('Solar_User'));
>         }
>
>     }
>
> After that you can forget about your code above. This is because when
> you factory() a user object it instantiates an auth object and calls
> start() on it for you. Even better, if you are extending
> Solar_App_Base, you see that it has exactly the same code as above in
> _setup(). This means your can forget about my code too and everything
> should work.
>
>   
>>  In the config file, having "'adapter'=>'Solar_Auth_Adapter_Sql'" or
>> "'adapter'=>'Solar_Sql_Adapter_Mysql'" makes no difference, they could just
>> as easily be deleted. I need to set them in the Login.php script or the
>> example I'm working with in Index.php, which looks like this:
>>
>>      $sql = solar::factory('solar_sql');
>>      $sql->_config['adapter'] = 'Solar_Sql_Adapter_Mysql';
>>      $select = Solar::factory('Solar_Sql_Select', $sql->_config);
>>      $select->from('users',array('*'));
>>      ....
>>     
>
> I not exactly sure what you are trying to do here but
> $sql->_config['adapter'] will have no effect because
> Solar_Sql_Adapter::_config is a protected class property. The good
> news is that you don't need to do anything like that. Remember in the
> _setup() code I gave you, it registers an sql object for you too. This
> means all the Solar_Sql_* classes will use it now. So all you have to
> do is:
>
>     $select = Solar::factory('Solar_Sql_Select');
>     $select->from('users',array('*'));
>
>
>   


More information about the Solar-talk mailing list