snippet.adminlogin.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. /** @var AdminTools $AdminTools */
  3. /** @var array $scriptProperties */
  4. $path = $modx->getOption('admintools_core_path', null, $modx->getOption('core_path') . 'components/admintools/').'services/';
  5. $AdminTools = $modx->getService('admintools','AdminTools',$path, $scriptProperties);
  6. if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
  7. $get = $modx->sanitize($_GET, $modx->sanitizePatterns);
  8. $get = array_map('trim',$get);
  9. $success = true;
  10. $message = $modx->lexicon('admintools_link_is_sent');
  11. if (empty($get['action']) || $get['action'] != 'login') {
  12. $message = 'Access is denied';
  13. $success = false;
  14. } elseif (empty($get['userdata'])) {
  15. $message = $modx->lexicon('admintools_enter_username_or_email');
  16. $success = false;
  17. }
  18. if ($success) {
  19. if ($msg = $AdminTools->sendLoginLink($get)){
  20. $success = false;
  21. $message = $msg;
  22. };
  23. }
  24. $response = array('success'=>$success, 'message'=>$message);
  25. exit($modx->toJSON($response));
  26. } else {
  27. if ($modx->user->isAuthenticated('mgr')) {
  28. $url = $modx->getOption('manager_url', null, MODX_MANAGER_URL);
  29. $url = $modx->getOption('url_scheme', null, MODX_URL_SCHEME) . $modx->getOption('http_host', null, MODX_HTTP_HOST) . rtrim($url, '/');
  30. $modx->sendRedirect($url);
  31. }
  32. $errormsg = '';
  33. if (isset($_GET['a']) && isset($_GET['hash']) && isset($_GET['id'])) {
  34. $get = $modx->sanitize($_GET, $modx->sanitizePatterns);
  35. $data = $AdminTools->getLoginState($get['id']);
  36. if (!empty($data) && $get['hash'] == $data['hash'] && !empty($data['uid'])) {
  37. $key = md5($_SERVER['REMOTE_ADDR'] . '/' . $_SERVER['HTTP_USER_AGENT'] . $data['uid']);
  38. if ($key == $get['id']) {
  39. $errormsg = $AdminTools->loginUser($data['uid']);
  40. }
  41. }
  42. }
  43. /** @var array $scriptProperties */
  44. $assetsUrl = $AdminTools->getOption('assetsUrl');
  45. $modx->regClientCss($assetsUrl . 'css/mgr/login.css');
  46. $modx->regClientScript($assetsUrl . 'js/mgr/login.js');
  47. return $modx->getChunk($tpl, ['errormsg' => $errormsg]);
  48. }