LoginController.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. /**
  3. * FecShop file.
  4. *
  5. * @link http://www.fecshop.com/
  6. * @copyright Copyright (c) 2016 FecShop Software LLC
  7. * @license http://www.fecshop.com/license/
  8. */
  9. namespace fecadmin\controllers;
  10. use Yii;
  11. use yii\helpers\Url;
  12. use fec\helpers\CModel;
  13. use fec\helpers\CRequest;
  14. use fec\helpers\CDate;
  15. use fec\helpers\CUrl;
  16. use fec\helpers\CConfig;
  17. use yii\web\Controller;
  18. use fecadmin\models\AdminUser;
  19. use fecadmin\models\AdminUser\AdminUserLogin;
  20. use fecadmin\models\AdminUser\AdminUserLoginRemote;
  21. /**
  22. * @author Terry Zhao <2358269014@qq.com>
  23. * @since 1.0
  24. */
  25. class LoginController extends Controller
  26. {
  27. public function getViewPath()
  28. {
  29. return Yii::getAlias('@fecadmin/views') . DIRECTORY_SEPARATOR . $this->id;
  30. }
  31. public function actionSession(){
  32. $phpsession = CRequest::param("phpsession");
  33. if($phpsession){
  34. $_COOKIE['PHPSESSID'] = $phpsession;
  35. }
  36. }
  37. public function getCurrentUser($username,$usercode){
  38. $user = AdminUser::findOne(['username' => $username]);
  39. if($user->username){
  40. }else{
  41. $u = AdminUser::findOne(['code' => $usercode]);
  42. if($u->code){
  43. echo json_encode(["status"=>"fail","content" =>"user code is exist"]);
  44. exit;
  45. }
  46. $user = new AdminUser;
  47. $user->username = $username;
  48. $user->code = $usercode;
  49. $user->setPassword(md5(CDate::getCurrentDateTime()));
  50. # 设置默认的用户权限组
  51. $user->role = CConfig::param("default_role_id");
  52. //$adminUser->save();
  53. //$user = AdminUser::findOne(['username' => $username]);
  54. }
  55. $user->generateAccessToken();
  56. $user->save();
  57. return $user;
  58. }
  59. # 通过远程,获取当前用户的access_token
  60. # 传递username usercode(可选)
  61. # 返回json格式的access_token
  62. public function actionRemoteindex(){
  63. $key = CRequest::param("key");
  64. $configKey = CConfig::param("remote_get_access_token_key");
  65. $username = CRequest::param("username");
  66. $usercode = CRequest::param("usercode") ? CRequest::param("usercode") : '';
  67. if(($configKey) && ($key == $configKey) && $username){
  68. $user = $this->getCurrentUser($username,$usercode);
  69. if(isset($user['access_token']))
  70. echo json_encode(["status"=>"success","access_token" =>$user['access_token']]);
  71. }
  72. }
  73. # 通过access_token 设置登录状态
  74. public function actionLoginbyaccesstoken(){
  75. $access_token = CRequest::param("access_token");
  76. $username = CRequest::param("username");
  77. if($access_token ){
  78. if($username){
  79. $one = AdminUser::findOne([
  80. 'username' => $username,
  81. 'access_token' => $access_token,
  82. ]);
  83. if($one->username){
  84. $one->generateAccessToken();
  85. $one->save();
  86. \Yii::$app->user->login($one, 3600 * 24);
  87. header('Location: '.CUrl::getHomeUrl());
  88. }else{
  89. echo "User Access Token Is TimeOut";
  90. }
  91. }else{
  92. echo "UserName Can Not Empty";
  93. }
  94. }else{
  95. echo "Access Token Can Not Empty";
  96. }
  97. }
  98. public function actionIndex()
  99. {
  100. //exit;
  101. $isGuest = Yii::$app->user->isGuest;
  102. //echo $isGuest;exit;
  103. if(!$isGuest){
  104. //$this->redirect("/",200);
  105. Yii::$app->getResponse()->redirect("/")->send();
  106. return;
  107. }
  108. $errors = '';
  109. $loginParam = \fec\helpers\CRequest::param('login');
  110. if($loginParam){
  111. //echo 1;exit;
  112. $AdminUserLogin = new AdminUserLogin;
  113. $AdminUserLogin->attributes = $loginParam;
  114. if($AdminUserLogin->login()){
  115. \fecadmin\helpers\CSystemlog::saveSystemLog();
  116. //$this->redirect("/",200)->send();
  117. Yii::$app->getResponse()->redirect("/")->send();
  118. return;
  119. }else{
  120. $errors = CModel::getErrorStr($AdminUserLogin->errors);
  121. }
  122. }
  123. $this->layout = "login.php";
  124. return $this->render('index',['error' => $errors]);
  125. }
  126. }