package PBoard::Schema::DBIC::PbUser; use base qw/DBIx::Class/; __PACKAGE__->load_components(qw[ PK::Auto Core ]); __PACKAGE__->table('pboard.pb_user'); __PACKAGE__->add_columns(qw[ user_id username password old_user_id ]); __PACKAGE__->set_primary_key(qw[ user_id ]); __PACKAGE__->has_many( roles => 'PBoard::Schema::DBIC::PbUserRole', 'user_id' ); __PACKAGE__->has_one( profile => 'PBoard::Schema::DBIC::PbUserProfile', 'user_id' ); __PACKAGE__->has_one( settings => 'PBoard::Schema::DBIC::PbUserSettings', 'user_id' ); use Crypt::SaltedHash (); use Digest::MD5 (); sub check_password { my ( $self, $password ) = @_; if ( $password =~ m[^{.*}] ) { # like {SHA256} my $salt_len = $self->can("password_salt_len") ? $self->password_salt_len : 0; return Crypt::SaltedHash->validate( $self->password, $password, $salt_len ); } else { # old board method my $passdword_digest = &Digest::MD5::md5_hex( $password . lc( $self->username ) ); return $self->password eq $passdword_digest; } } sub get_group { my ( $self ) = @_; my $roles = $self->roles; } 1;