Advertisement
Guest User

Untitled

a guest
Jul 29th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. namespace Craft;
  2.  
  3. class CustomLoginController extends BaseController
  4. {
  5. protected $allowAnonymous = true;
  6.  
  7. public function actionLogin()
  8. {
  9. // Attempt to log the user in
  10. $this->_login();
  11.  
  12. // Now pass back to the normal login controller
  13. craft()->runController('users/login');
  14. }
  15.  
  16. private function _login()
  17. {
  18. if (craft()->userSession->isLoggedIn())
  19. {
  20. return;
  21. }
  22.  
  23. if (craft()->request->isPostRequest())
  24. {
  25. $loginName = craft()->request->getPost('loginName');
  26. $password = craft()->request->getPost('password');
  27. $rememberMe = (bool) craft()->request->getPost('rememberMe');
  28.  
  29. // Try logging them in normally
  30. if (craft()->userSession->login($loginName, $password, $rememberMe))
  31. {
  32. return;
  33. }
  34.  
  35. // Is it an actual user account, at least?
  36. $user = craft()->users->getUserByUsernameOrEmail($loginName);
  37.  
  38. if ($user)
  39. {
  40. // See if they had an EE user account
  41. $host = craft()->config->get('server', ConfigFile::Db);
  42. $port = craft()->config->get('port', ConfigFile::Db);
  43. $dbName = 'ee_database_name';
  44. $dbUser = 'ee_database_username';
  45. $dbPass = 'ee_database_password';
  46. $db = new DbConnection('mysql:host='.$host.';dbname='.$dbName.';port='.$port.';', $dbUser, $dbPass);
  47.  
  48. $row = $db->createCommand()
  49. ->select('member_id, password, salt')
  50. ->from('exp_members')
  51. ->where(array('or', 'username=:login', 'email=:login'), array(':login' => $loginName))
  52. ->queryRow();
  53.  
  54. if ($row)
  55. {
  56. $hashedPassword = $this->_hashEEPassword($password);
  57.  
  58. if ($hashedPassword == $row['password'])
  59. {
  60. // Eureka! Now update the local user account
  61. $user->newPassword = $password;
  62. craft()->users->changePassword($user);
  63.  
  64. // Delete the old user row so their old password stops working
  65. $db->createCommand()->delete('exp_members',
  66. array('member_id=:id'),
  67. array(':id' => $row['member_id']));
  68. }
  69. }
  70. }
  71. }
  72. }
  73.  
  74. private function _hashEEPassword($password)
  75. {
  76. // Hash the password using EE's hashing technique
  77. // ...
  78.  
  79. return $hashedPassword;
  80. }
  81. }
  82.  
  83. <input type="hidden" name="action" value="customLogin/login">
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement