Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package MooUsers;
- #############################################
- # Perl package MooUsers #
- # by Moriel Schottlender #
- # ----------------------------------------- #
- # User class for mooBot, using MooMySQL #
- #############################################
- use strict;
- use warnings;
- use Carp;
- use Data::Dumper;
- use Crypt::PasswdMD5;
- use MooMySQL;
- my %users;
- sub new {
- my $class = shift;
- my $self = {@_};
- bless($self, $class);
- $self->_init;
- return $self;
- }
- sub dbconnect { $_[0]->{dbconnect}=$_[1] if defined $_[1]; $_[0]->{dbconnect} }
- sub dbtable { $_[0]->{dbtable}=$_[1] if defined $_[1]; $_[0]->{dbtable} }
- sub db { $_[0]->{db}=$_[1] if defined $_[1]; $_[0]->{db} }
- sub _init {
- my $self = shift;
- #print Dumper $self->{dbconnect};
- #$self->{db} = MooMySQL->new(\$self->{dbconnect});
- $self->{db} = MooMySQL->new(
- 'database' => 'IRC_Bot',
- 'pass' => 'qazwsx@123',
- 'user' => 'ircbot',
- 'host' => 'localhost'
- );
- }
- # ==================
- # Retrieve routines
- # ==================
- # $obj->users();
- # $obj->get_user_details($username);
- # $obj->get_user_by_id($user_id);
- #USAGE: $obj->users();
- sub users {
- my $self = shift;
- return $self->{db}->select($self->{dbtable});
- }
- #USAGE: $obj->get_user_details($username);
- sub get_user_details {
- my $self = shift;
- my $username = shift;
- my %details = (username => $username);
- my $udet = $self->{db}->select($self->{dbtable},\%details);
- return $udet;
- }
- #USAGE: $obj->get_user_by_id($userid);
- sub get_user_by_id {
- my $self = shift;
- my $userid = shift;
- my %details = (id => $userid);
- my $udet = $self->{db}->select($self->{dbtable},\%details);
- return $udet;
- }
- # ==================
- # Check routines
- # ==================
- # $obj->chk_level($username, $necessary_level);
- # $obj->chk_login($username, $password);
- #USAGE: $obj->chk_level($username, $necessary_level);
- sub chk_level {
- my $self = shift;
- my $username = shift;
- my $necessary_level = shift;
- my %details = (username => $username);
- my $udet = $self->{db}->select($self->{dbtable},\%details);
- return 1 if ($udet->{access_level} >= $necessary_level);
- return 0;
- }
- #USAGE: $obj->chk_login($username, $password);
- sub chk_login {
- my $self = shift;
- my $username = shift;
- my $password = shift;
- ## get user from db:
- my $u=$self->get_user_details($username);
- ## compare passwords:
- return $self->_md5_pwd_compare($password,$u->{password});
- }
- # ==================
- # Helper functions
- # ==================
- # $obj->_md5_pwd_compare($plain_pwd, $crypt_pwd);
- # $obj->_md5_pwd_generate($plain_pwd);
- sub _md5_pwd_compare {
- my $self = shift;
- my $plain_pwd = shift || return;
- my $crypt_pwd = shift || return;
- return 0 unless $crypt_pwd eq unix_md5_crypt($plain_pwd, $crypt_pwd);
- return 1;
- }
- sub _md5_pwd_generate {
- my $self = shift;
- my $pwd = shift || return;
- my $crypt = unix_md5_crypt($pwd);
- return ($crypt);
- }
- return 1;
Add Comment
Please, Sign In to add comment