admin_login_model.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. class admin_login_model extends Model {
  3. public function logmein() {
  4. $data = $this->escapeArray($_REQUEST);
  5. if ($_REQUEST['email']!='' && $_REQUEST['pass']!='') {
  6. // Look the user up by identity only; the password is verified in PHP
  7. // so we can support hashed passwords (and legacy plaintext during migration).
  8. $result = $this->query("select * from azonics_admin_users where "
  9. . "admin_status='1' and "
  10. . "(admin_email='".$data['email']."' or admin_name='".$data['email']."');");
  11. if (sizeof($result)>0 && admin_utils::verifyPassword($_REQUEST['pass'], $result[0]->admin_pass)) {
  12. // Upgrade legacy plaintext passwords to a proper hash on first valid login.
  13. if (admin_utils::passwordNeedsRehash($result[0]->admin_pass)) {
  14. $newHash = admin_utils::hashPassword($_REQUEST['pass']);
  15. $this->execute("update azonics_admin_users set admin_pass='".$this->escapeString($newHash)."' where admin_id='".$result[0]->admin_id."';");
  16. $result[0]->admin_pass = $newHash;
  17. }
  18. $this->execute("update azonics_admin_users set admin_last_ip='".$_SERVER['REMOTE_ADDR']."' where admin_id='".$result[0]->admin_id."';");
  19. $_SESSION['admin_user'] = $result[0];
  20. $_SESSION['access_level'] = $result[0]->admin_access_level;
  21. return true;
  22. }
  23. else {
  24. return false;
  25. }
  26. }
  27. else {
  28. return false;
  29. }
  30. }
  31. public function logmeout() {
  32. $this->query("update azonics_admin_users set admin_status='1' where admin_id='".$_SESSION['admin_user']->admin_id."';");
  33. $_SESSION['admin_user'] = null;
  34. }
  35. public function passwordReminder() {
  36. $data = $this->escapeArray($_REQUEST);
  37. $result = $this->query("select * from azonics_admin_users where admin_email='".$data['email']."' and admin_status='1';");
  38. if (sizeof($result)>0) {
  39. // Passwords are stored hashed and can no longer be recovered, so we
  40. // generate a new temporary password, store it hashed, and return the
  41. // plaintext value so the caller can e-mail it to the user.
  42. $tempPass = bin2hex(random_bytes(6));
  43. $hash = admin_utils::hashPassword($tempPass);
  44. $this->execute("update azonics_admin_users set admin_pass='".$this->escapeString($hash)."' where admin_id='".$result[0]->admin_id."';");
  45. $result[0]->admin_pass = $tempPass;
  46. return $result[0];
  47. }
  48. else {
  49. return false;
  50. }
  51. }
  52. public function reloadProfile() {
  53. $result = $this->query("select * from azonics_admin_users where "
  54. . "admin_id='".$_SESSION['admin_user']->admin_id."' and "
  55. . "admin_status='1';");
  56. if (sizeof($result)>0) {
  57. $_SESSION['admin_user'] = $result[0];
  58. return true;
  59. }
  60. else {
  61. return false;
  62. }
  63. }
  64. }