[Solar-talk] Verifying Login Status

Sean Montague scene at themountainscene.com
Wed Feb 6 16:52:27 CST 2008


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();
    ....

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('*'));
    ....

All this works, and checking the authorization as you mentioned works 
too. Is setting $sql->_config['adapter'] the way I do a good idea? It 
seems like a hack for me to do it this way.

Thanks!
Sean

Sean Montague wrote:
> On Feb 1, 2008 9:07 PM, Sean Montague wrote:
> >/ I've worked through the tutorial on http://blog.phpdeveloper.org/?p=65
> />/ using Solar_Auth_Adapter_Sql, and I've set a session like:
> />/
> />/ $session = Solar::factory('Solar_Session',
> />/     array('class' => 'Vendor_App_Login')
> />/ );
> />/ $session->store['uid'] = $auth->uid;
> />/
> />/ Should I check the session in the bootstrap?
> /
> Not really, and, well, I prefer to keep the bootstrap cleaner as
> possible (just setting include ptah and making a Solar front
> controller call).
>
> You can initialize the auth proccess when initializing any app, with only this:
>
>     $auth = Solar::factory('Solar_Auth');
>     $auth->start();
>     Solar_Registry::set('auth', $auth);
>
> Note that it would be better to set the auth adapter configuration in
> the config file, not in the factory call as in that tutorial. This way
> you can change the configuration more easily.
>
> Then to check if the use is logged in, you can call this anywhere:
> Solar_Registry::get('auth')->isValid(), like in:
>
> if (Solar_Registry::get('auth')->isValid()) {
>     // user is logged in
> } else {
>     // user is *not* logged in
> }
>
> Also you could use Solar_User, which wraps an auth object, plus role
> and access objects. But, for a simple authentication, just registering
> a start()'ed auth object as above would do the job.
>
> -- rodrigo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman-mail3.webfaction.com/pipermail/solar-talk/attachments/20080206/3452a367/attachment.html


More information about the Solar-talk mailing list