Guest User

Untitled

a guest
Aug 19th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. package MooUsers;
  2.  
  3. #############################################
  4. # Perl package MooUsers #
  5. # by Moriel Schottlender #
  6. # ----------------------------------------- #
  7. # User class for mooBot, using MooMySQL #
  8. #############################################
  9.  
  10. use strict;
  11. use warnings;
  12. use Carp;
  13. use Data::Dumper;
  14. use Crypt::PasswdMD5;
  15.  
  16. use MooMySQL;
  17.  
  18. my %users;
  19.  
  20. sub new {
  21. my $class = shift;
  22. my $self = {@_};
  23.  
  24. bless($self, $class);
  25.  
  26. $self->_init;
  27.  
  28. return $self;
  29. }
  30.  
  31. sub dbconnect { $_[0]->{dbconnect}=$_[1] if defined $_[1]; $_[0]->{dbconnect} }
  32. sub dbtable { $_[0]->{dbtable}=$_[1] if defined $_[1]; $_[0]->{dbtable} }
  33. sub db { $_[0]->{db}=$_[1] if defined $_[1]; $_[0]->{db} }
  34.  
  35. sub _init {
  36. my $self = shift;
  37.  
  38. #print Dumper $self->{dbconnect};
  39. #$self->{db} = MooMySQL->new(\$self->{dbconnect});
  40. $self->{db} = MooMySQL->new(
  41. 'database' => 'IRC_Bot',
  42. 'pass' => 'qazwsx@123',
  43. 'user' => 'ircbot',
  44. 'host' => 'localhost'
  45. );
  46.  
  47. }
  48. # ==================
  49. # Retrieve routines
  50. # ==================
  51. # $obj->users();
  52. # $obj->get_user_details($username);
  53. # $obj->get_user_by_id($user_id);
  54.  
  55. #USAGE: $obj->users();
  56. sub users {
  57. my $self = shift;
  58.  
  59. return $self->{db}->select($self->{dbtable});
  60. }
  61.  
  62. #USAGE: $obj->get_user_details($username);
  63. sub get_user_details {
  64. my $self = shift;
  65. my $username = shift;
  66.  
  67. my %details = (username => $username);
  68. my $udet = $self->{db}->select($self->{dbtable},\%details);
  69.  
  70. return $udet;
  71. }
  72.  
  73. #USAGE: $obj->get_user_by_id($userid);
  74. sub get_user_by_id {
  75. my $self = shift;
  76. my $userid = shift;
  77.  
  78. my %details = (id => $userid);
  79. my $udet = $self->{db}->select($self->{dbtable},\%details);
  80.  
  81. return $udet;
  82. }
  83.  
  84. # ==================
  85. # Check routines
  86. # ==================
  87. # $obj->chk_level($username, $necessary_level);
  88. # $obj->chk_login($username, $password);
  89.  
  90. #USAGE: $obj->chk_level($username, $necessary_level);
  91. sub chk_level {
  92. my $self = shift;
  93. my $username = shift;
  94. my $necessary_level = shift;
  95.  
  96. my %details = (username => $username);
  97. my $udet = $self->{db}->select($self->{dbtable},\%details);
  98.  
  99. return 1 if ($udet->{access_level} >= $necessary_level);
  100. return 0;
  101. }
  102. #USAGE: $obj->chk_login($username, $password);
  103. sub chk_login {
  104. my $self = shift;
  105. my $username = shift;
  106. my $password = shift;
  107.  
  108. ## get user from db:
  109. my $u=$self->get_user_details($username);
  110.  
  111. ## compare passwords:
  112. return $self->_md5_pwd_compare($password,$u->{password});
  113.  
  114. }
  115.  
  116. # ==================
  117. # Helper functions
  118. # ==================
  119. # $obj->_md5_pwd_compare($plain_pwd, $crypt_pwd);
  120. # $obj->_md5_pwd_generate($plain_pwd);
  121.  
  122. sub _md5_pwd_compare {
  123. my $self = shift;
  124. my $plain_pwd = shift || return;
  125. my $crypt_pwd = shift || return;
  126. return 0 unless $crypt_pwd eq unix_md5_crypt($plain_pwd, $crypt_pwd);
  127. return 1;
  128. }
  129.  
  130. sub _md5_pwd_generate {
  131. my $self = shift;
  132. my $pwd = shift || return;
  133. my $crypt = unix_md5_crypt($pwd);
  134. return ($crypt);
  135. }
  136.  
  137. return 1;
Add Comment
Please, Sign In to add comment