auth_remote.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. class Auth_Remote extends Auth_Base {
  3. function get_login_by_ssl_certificate() {
  4. $cert_serial = db_escape_string(get_ssl_certificate_id());
  5. if ($cert_serial) {
  6. $result = db_query($this->link, "SELECT login FROM ttrss_user_prefs, ttrss_users
  7. WHERE pref_name = 'SSL_CERT_SERIAL' AND value = '$cert_serial' AND
  8. owner_uid = ttrss_users.id");
  9. if (db_num_rows($result) != 0) {
  10. return db_escape_string(db_fetch_result($result, 0, "login"));
  11. }
  12. }
  13. return "";
  14. }
  15. function authenticate($login, $password) {
  16. $try_login = db_escape_string($_SERVER["REMOTE_USER"]);
  17. if (!$try_login) $try_login = $this->get_login_by_ssl_certificate();
  18. # if (!$try_login) $try_login = "test_qqq";
  19. if ($try_login) {
  20. $user_id = $this->auto_create_user($try_login);
  21. if ($user_id) {
  22. $_SESSION["fake_login"] = $try_login;
  23. $_SESSION["fake_password"] = "******";
  24. $_SESSION["hide_hello"] = true;
  25. $_SESSION["hide_logout"] = true;
  26. // LemonLDAP can send user informations via HTTP HEADER
  27. if (defined('AUTH_AUTO_CREATE') && AUTH_AUTO_CREATE){
  28. // update user name
  29. $fullname = $_SERVER['HTTP_USER_NAME'] ? $_SERVER['HTTP_USER_NAME'] : $_SERVER['AUTHENTICATE_CN'];
  30. if ($fullname){
  31. $fullname = db_escape_string($fullname);
  32. db_query($this->link, "UPDATE ttrss_users SET full_name = '$fullname' WHERE id = " .
  33. $user_id);
  34. }
  35. // update user mail
  36. $email = $_SERVER['HTTP_USER_MAIL'] ? $_SERVER['HTTP_USER_MAIL'] : $_SERVER['AUTHENTICATE_MAIL'];
  37. if ($email){
  38. $email = db_escape_string($email);
  39. db_query($this->link, "UPDATE ttrss_users SET email = '$email' WHERE id = " .
  40. $user_id);
  41. }
  42. }
  43. return $user_id;
  44. }
  45. }
  46. return false;
  47. }
  48. }
  49. ?>