Advertisement
Guest User

Untitled

a guest
Jun 6th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.01 KB | None | 0 0
  1. diff --git a/src/Pluf/User.php b/src/Pluf/User.php
  2. index 86301f8..3365623 100644
  3. --- a/src/Pluf/User.php
  4. +++ b/src/Pluf/User.php
  5. @@ -259,15 +259,93 @@ class Pluf_User extends Pluf_Model
  6. {
  7. $where = 'login = '.$this->_toDb($login, 'login');
  8. $users = $this->getList(array('filter' => $where));
  9. - if ($users === false or count($users) !== 1) {
  10. - return false;
  11. - }
  12. - if ($users[0]->active and $users[0]->checkPassword($password)) {
  13. - return $users[0];
  14. + $ldap = Pluf::f('ldap_enable');
  15. + $ret = 2;
  16. + if ($users === false or count($users) !== 1)
  17. + {
  18. + $ret = -1;
  19. + if ($ldap === true) {
  20. + if (false === $this->checkCreditentialsLDAP($login,$password))
  21. + $ret = 0;
  22. + else $ret = 1;
  23. + }
  24. + else return false;
  25. }
  26. + if ($ret === 0 || $ret === -1)
  27. + return false;
  28. + else if ($ret === 1){
  29. + $users = $this->getList(array('filter'=>$where));
  30. + if ($users[0]->active && $users[0]->checkPassword($password)){
  31. + return $users[0];
  32. + }
  33. + }
  34. + else if ($users[0]->active && $users[0]->checkPassword($password))
  35. + return $users[0];
  36. return false;
  37. }
  38.  
  39. + function createUser($fn,$ln,$login,$mail,$pass)
  40. + {
  41. + $user = new Pluf_User();
  42. + $user->first_name = $fn;
  43. + $user->last_name =$ln;
  44. + $user->login =$login;
  45. + $user->email = $mail;
  46. + $user->password=$pass;
  47. + $user->administrator = true;
  48. + $user->active = true;
  49. + $user->create();
  50. +
  51. +}
  52. +
  53. + /**
  54. + * Check if the login and password are valid, if they are not found in the database
  55. + *
  56. + */
  57. +
  58. +
  59. + function checkCreditentialsLDAP($login, $password)
  60. + {
  61. + //Connect to the LDAP Server having posixaccount users
  62. + $ldapHost = Pluf::f('ldap_host_port');
  63. + $binddn = Pluf::f('ldap_user');
  64. + $bindpass = Pluf::f('ldap_password');
  65. + $dn = Pluf::f('ldap_baseDn');
  66. + $version = Pluf::f('ldap_version');
  67. + $key=Pluf::f('ldap_primaryKey');
  68. + $ds=ldap_connect($ldapHost);
  69. + ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, $version);
  70. + $result=@ldap_bind($ds,$binddn,$bindpass);
  71. + if ($result)
  72. + {
  73. + $filter = "($key=$login)";
  74. + $sr = ldap_search($ds, $dn, $filter); //the search result
  75. + $entry = ldap_first_entry($ds, $sr); //returns the first entry of the search result
  76. + $countE = ldap_get_entries($ds,$sr);
  77. + if ($countE["count"] === 1)
  78. + {
  79. + $values = ldap_get_values($ds, $entry, "userPassword"); // returns the value of the attribute <<userPassword>>
  80. + $ldappassword = substr($values[0],7);
  81. + $salt = substr($ldappassword,0,12);
  82. + $inputpassword = crypt($password,$salt);
  83. + if ($ldappassword === $inputpassword)
  84. + {
  85. + //uid , firstname, lastname, mail, password, false,
  86. + $sn = ldap_get_values($ds, $entry, "sn");
  87. + $givenName = ldap_get_values($ds, $entry, "givenName");
  88. + $mail = ldap_get_values($ds, $entry, "tuMail");
  89. + $this->createUser($givenName[0],$sn[0],$login,$mail[0],$password);
  90. + return true;
  91. + }
  92. + else return false;
  93. + }
  94. + else return false;
  95. + }
  96. + else return false;
  97. + ldap_close($ds);
  98. + }
  99. +
  100. +
  101. /**
  102. * Set the last_login and date_joined before creating.
  103. *
  104. diff --git a/src/Pluf/Views.php b/src/Pluf/Views.php
  105. index 9081552..dae56fb 100644
  106. --- a/src/Pluf/Views.php
  107. +++ b/src/Pluf/Views.php
  108. @@ -61,7 +61,7 @@ class Pluf_Views
  109. and isset($request->POST['login'])
  110. and isset($request->POST['password'])) {
  111. $users = new Pluf_User();
  112. - if (false === ($user = $users->checkCreditentials($request->POST['login'], $request->POST['password']))) {
  113. + if (false === ($user = $users->checkCreditentials($request->POST['login'], $request->POST['password']))){
  114. $error = __('The login or the password is not valid. The login and the password are case sensitive.');
  115. } else {
  116. if (!$request->session->getTestCookie()) {d
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement