auth.utils.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. define("CONFIG", 1);
  3. define("SQL", 1);
  4. require_once ($_SERVER['DOCUMENT_ROOT']."/cfg/config.php");
  5. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/sql.php");
  6. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/common.php");
  7. function logout()
  8. {
  9. if ( ! session_id() ) { session_start(); }
  10. if ( session_id() ) {
  11. // Если есть активная сессия, удаляем куки сессии
  12. setcookie(session_name(), session_id(), time()-60*60*24);
  13. session_unset();
  14. session_destroy();
  15. }
  16. header("Location: /login.php");
  17. }
  18. function qlogout()
  19. {
  20. if ( ! session_id() ) { session_start(); }
  21. if ( session_id() ) {
  22. // Если есть активная сессия, удаляем куки сессии
  23. setcookie(session_name(), session_id(), time()-60*60*24);
  24. session_unset();
  25. session_destroy();
  26. }
  27. exit;
  28. }
  29. //login by password
  30. function login($db)
  31. {
  32. if (!session_id()) {
  33. if ( ! session_start() ) { logout(); exit(); }
  34. }
  35. if (! IsAuthenticated($db)) { logout(); exit(); }
  36. return true;
  37. }
  38. //login by api_key
  39. function Silentlogin($db)
  40. {
  41. if (!session_id()) {
  42. if ( ! session_start() ) { logout(); exit(); }
  43. }
  44. if (! IsSilentAuthenticated($db)) { logout(); exit(); }
  45. return true;
  46. }
  47. function IsAuthenticated($db)
  48. {
  49. if (!empty($_SESSION['user_id'])) { return true; }
  50. if (empty($auth_ip)) {
  51. $auth_ip = get_user_ip();
  52. $_SESSION['IP'] = $auth_ip;
  53. }
  54. if (!empty($_POST['login'])) { $login = trim($_POST['login']); }
  55. if (!empty($_POST['password'])) { $pass = trim($_POST['password']); }
  56. if (empty($login) or empty($pass)) {
  57. LOG_DEBUG($db, "login [$login] or password [$pass] undefined from $auth_ip: fail!");
  58. logout();
  59. return false;
  60. }
  61. $login = htmlspecialchars(stripslashes($login));
  62. if (empty($login) or empty($pass)) {
  63. LOG_DEBUG($db, "login [$login] or password [$pass] undefined from $auth_ip: fail!");
  64. logout();
  65. return false;
  66. }
  67. $query = "SELECT * FROM `Customers` WHERE Login='{$login}'";
  68. $auth_record = get_record_sql($db,$query);
  69. if (!empty($auth_record)) {
  70. if (password_verify($pass, $auth_record['password'])) {
  71. if (empty($_SESSION['session_id'])) {
  72. session_regenerate_id();
  73. $_SESSION['session_id'] = session_id();
  74. }
  75. if (empty($_SESSION['user_id'])) {
  76. LOG_DEBUG($db, "login user [$login] from " . $_SESSION['IP'] . ": success.");
  77. }
  78. $_SESSION['user_id'] = $auth_record['id'];
  79. $_SESSION['login'] = $login;
  80. return true;
  81. } else {
  82. LOG_DEBUG($db, "login user [$login] from " . $_SESSION['IP'] . ": fail!");
  83. logout();
  84. return false;
  85. }
  86. }
  87. LOG_DEBUG($db, "login user [$login] from " . $_SESSION['IP'] . ": fail!");
  88. logout();
  89. return false;
  90. }
  91. function IsSilentAuthenticated($db)
  92. {
  93. if (!empty($_SESSION['user_id'])) { return true; }
  94. if (empty($auth_ip)) {
  95. $auth_ip = get_user_ip();
  96. $_SESSION['IP'] = $auth_ip;
  97. }
  98. if (!empty($_GET['login'])) { $login = trim($_GET['login']); }
  99. if (!empty($_POST['login'])) { $login = trim($_POST['login']); }
  100. if (!empty($_GET['password'])) { $pass = trim($_GET['password']); }
  101. if (!empty($_POST['password'])) { $pass = trim($_POST['password']); }
  102. if (!empty($_GET['api_key'])) { $pass = trim($_GET['api_key']); }
  103. if (!empty($_POST['api_key'])) { $pass = trim($_POST['api_key']); }
  104. if (empty($login) or empty($pass)) {
  105. LOG_DEBUG($db, "login or password undefined from $auth_ip: fail!");
  106. logout();
  107. return false;
  108. }
  109. $login = htmlspecialchars(stripslashes($login));
  110. if ($login == '' or $pass == '') {
  111. LOG_DEBUG($db, "login or password undefined from $auth_ip: fail!");
  112. logout();
  113. return false;
  114. }
  115. $query = "SELECT id FROM `Customers` WHERE Login='{$login}' AND `api_key`='{$pass}'";
  116. $auth_record = get_record_sql($db,$query);
  117. if (!empty($auth_record)) {
  118. if (empty($_SESSION['session_id'])) {
  119. session_regenerate_id();
  120. $_SESSION['session_id'] = session_id();
  121. }
  122. if (empty($_SESSION['user_id'])) {
  123. LOG_DEBUG($db, "Silent login user [$login] from " . $_SESSION['IP'] . ": success.");
  124. }
  125. $_SESSION['user_id'] = $auth_record['id'];
  126. $_SESSION['login'] = $login;
  127. return true;
  128. }
  129. LOG_DEBUG($db, "Silent login user $login from " . $_SESSION['IP'] . ": fail!");
  130. logout();
  131. return false;
  132. }
  133. ?>