Hi,

As a beginner with Catalyst authentication I've got a few questions on which 
I'm struggling at the moment:

Starting situation:
* I've got to authenticate the user against a database to get the role (each 
user only can have ONE role)

In my database there are two tables: 
USERINFO - containig attributes for PK, USERNAME (attributename: 
userinfo_kuerzel) and foreign key to table ROLE (attribute name: fk_bdbrolle_pk)
ROLE - containig attributes for PK and ROLE (attribute name: bdbrolle_name)

Within my catalyst configuration I've the following realm configured:

authentication:
        default_realm: db
        realms:
            db:
                credential:
                    class: Password
                    password_field: userinfo_password
                    password_type:  clear
                store:
                    class: DBIx::Class
                    user_model: BDB::Userinfo
                    user_field: userinfo_kuerzel
                    role_relation: fk_bdbrolle_pk
                    role_field: bdbrolle_name
                    
  I succeeded to authenticate against this realm:
------------------
  if ($c->authenticate({userinfo_kuerzel => $username, userinfo_password => 
''}, "db") ) {  # Authenticate against realm
    ...
    # The username is available here via $c->user->userinfo_kuerzel;  # so my 
realm seems to get data ...
    # The role is available here via $c->user->fk_bdbrolle_pk->bdbrolle_name;  
# so my realm seems to get data ...
    
    # $c->assert_user_roles( qw/Wizard/ ); # This fails!! but 
$c->user->fk_bdbrolle_pk->bdbrolle_name IS "Wizard"
    
    $c->stash->{template} = 'index.tt';
    $c->forward( $c->view('TT') );
  }


* Within index.tt I try to access the username and role - which also works. I 
use something like this:
  [% IF c.user %]Willkommen, [% c.user.userinfo_kuerzel %]([% 
c.user.fk_bdbrolle_pk.bdbrolle_name %])[% ELSE %]Not logged in[% END %]

------------------

Questions:
* Isn't $c->user a persistent value within $c? When I try to access to c.user 
later (after "successfull" login) $c->user is undefined.
What is neccessary to make it persistent?

* When I try to check the user role for example via $c->assert_user_roles( 
qw/Wizard/ ); (c.user.fk_bdbrolle_pk.bdbrolle_name has been Wizard in my 
example) this fails completely: Caught exception in 
BDBInfo2::Controller::Root->login "Can't locate object method "search" via 
package "BDBInfo2::Model::BDB::Bdbrolle" at 
.../Catalyst/Authentication/Store/DBIx/Class/User.pm line 144." What's wrong 
here?
 

I tried several things - but cannot find any solution yet ...
Any help welcome - Thanks in advance!

Johannes
-- 
Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir
belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de

_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to