user.class.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. class USER {
  3. /*
  4. * Class attributes
  5. */
  6. private $uid;
  7. private $email;
  8. private $role;
  9. private $loggedin = false;
  10. /*
  11. * Constructor
  12. *
  13. * Fills the user object up with anonymous data
  14. */
  15. function __construct(){
  16. global $admins;
  17. // Start session
  18. session_start();
  19. session_regenerate_id();
  20. if(isset($_SESSION['email']) && in_array($_SESSION['email'], $admins)){
  21. $this->role = "admin";
  22. }
  23. else{
  24. $this->role = "user";
  25. }
  26. if(isset($_SESSION['uid']) && $_SESSION['uid'] != ""){
  27. // revive session ...
  28. $this->uid = $_SESSION['uid'];
  29. $this->loggedin = true;
  30. }
  31. }
  32. /*
  33. * Getter functions
  34. */
  35. function getUID(){
  36. return $this->uid;
  37. }
  38. function getRole(){
  39. return $this->role;
  40. }
  41. function isLoggedIn(){
  42. return $this->loggedin;
  43. }
  44. /*
  45. * Login function. Checks login data and writes information to SESSION
  46. *
  47. * Returns:
  48. * true: Login was successful
  49. * false: Login was not successful
  50. */
  51. function login($email, $password){
  52. global $db;
  53. // Prepare e-mail address
  54. $email = $db->escape_string($email);
  55. $email = strtolower($email);
  56. $password = $db->escape_string($password);
  57. $email_part = explode("@", $email);
  58. $username = $email_part[0];
  59. $domain = $email_part[1];
  60. // Check e-mail address
  61. $sql = "SELECT `".DBC_USERS_ID."`, `".DBC_USERS_PASSWORD."` FROM `".DBT_USERS."` WHERE `".DBC_USERS_USERNAME."` = '$username' AND `".DBC_USERS_DOMAIN."` = '$domain' LIMIT 1;";
  62. if(!$result = $db->query($sql)){
  63. die('There was an error running the query [' . $db->error . ']');
  64. }
  65. if($result->num_rows === 1){
  66. $userdata = $result->fetch_array(MYSQLI_ASSOC);
  67. $uid = $userdata[DBC_USERS_ID];
  68. $password_hash = $userdata[DBC_USERS_PASSWORD];
  69. // Check password
  70. if (crypt($password, $password_hash) === $password_hash) {
  71. // Password is valid, start a logged-in user session
  72. $this->loggedin = true;
  73. $_SESSION['uid'] = $uid;
  74. $_SESSION['email'] = $email;
  75. return true;
  76. }
  77. else {
  78. // Password is invalid
  79. return false;
  80. }
  81. }
  82. else{
  83. // User could not be found
  84. return false;
  85. }
  86. }
  87. /*
  88. * Changes user password.
  89. * Returns:
  90. * true: Change success
  91. * false: Error
  92. */
  93. function change_password($newpass, $newpass_rep){
  94. $pass_ok = check_new_pass($newpass, $newpass_rep);
  95. if($pass_ok === true){
  96. $pass_hash = gen_pass_hash($newpass);
  97. write_pass_hash_to_db($pass_hash, $this->uid);
  98. return true;
  99. }
  100. else{
  101. return false;
  102. }
  103. }
  104. }
  105. ?>