LoginController.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: chenkuan
  5. * Date: 2017/11/7
  6. * Time: 上午11:10
  7. */
  8. namespace backend\controllers;
  9. use backend\helpers\DateTimeHelper;
  10. use backend\helpers\MailHelper;
  11. use backend\helpers\RandomHelper;
  12. use backend\models\Config;
  13. use backend\models\Member;
  14. use backend\models\Signin;
  15. class LoginController extends BaseController
  16. {
  17. /**
  18. * 登录验证方法
  19. * @return \yii\web\Response
  20. */
  21. public function actionLoginPost()
  22. {
  23. $data = \Yii::$app->getRequest()->post();
  24. $checkData = $this->checkLoginInfo($data['username'], $data['password'], $data['type'], $data['ip']);
  25. if ($checkData->data['code'] == 1) {
  26. return $this->outJson(1, $checkData->data['data'], 'LOGIN SUCCESS');
  27. } else {
  28. return $this->outJson(0, false, 'LOGIN FAILED');
  29. }
  30. }
  31. /**
  32. * @title 校验登录信息
  33. * @param string $username
  34. * @param string $password
  35. * @param int $type
  36. * @param string $ip
  37. * @return \yii\web\Response
  38. */
  39. private function checkLoginInfo($username = '', $password = '', $type, $ip)
  40. {
  41. if (empty($username) || empty($password)) {
  42. return $this->outJson(0, [], '用户名或秘密不能为空');
  43. } else {
  44. $member = new Member();
  45. $model = $member->findByUserName($username, $type);
  46. if ($type == Member::MEMBER_TYPE_IB && $model == null) {
  47. $model = $member->findByIbOldLoginName($username);
  48. }
  49. if (!empty($model) && ($model->password == md5($password))
  50. && intval($model->type) == $type && intval($model->is_enable) == 1
  51. ) {
  52. $signin = new Signin();
  53. $signin->member_id = $model->id;
  54. $signin->ip = $ip;
  55. $signin->in_time = DateTimeHelper::microtime_float();
  56. $signin->save();
  57. $model->ip = $ip;
  58. if ($model->save()) {
  59. return $this->outJson(1, $model->getAttributes(null, ['password']), "LOGIN SUCCESS");
  60. }
  61. } else {
  62. return $this->outJson(0, false, 'LOGIN FAILED');
  63. }
  64. }
  65. }
  66. /**
  67. * 找回密码-修改密码发送验证码
  68. */
  69. public function actionPwd1()
  70. {
  71. $request = \Yii::$app->getRequest()->post();
  72. $username = $request['username'];
  73. $type = isset($request['type']) ? intval($request['type']) : 1;
  74. $member = new Member();
  75. $m = $member->findByUserName($username, $type);
  76. if ($m == null) {
  77. return $this->outJson(0, [], '用户不存在');
  78. }
  79. $code = RandomHelper::getRandomNo(6);
  80. $paramArray = ['code' => $code];
  81. $config = Config::findOne(1);
  82. $t = MailHelper::sendMail("找回密码验证码", $username, $paramArray, 'do.not.reply', $config->mail_code);
  83. if (!$t) {
  84. return $this->outJson(0, [], '邮件发送失败');
  85. }
  86. $m->random_code = $code;
  87. $m->random_code_time = DateTimeHelper::microtime_float();
  88. $rs = $m->save();
  89. if ($rs) {
  90. return $this->outJson(1, [$rs], '操作成功');
  91. }
  92. }
  93. /**
  94. * 找回密码-修改密码
  95. */
  96. public function actionModifyPwd1()
  97. {
  98. $request = \Yii::$app->getRequest()->post();
  99. $username = $request['username'];
  100. $password = $request['password'];
  101. $rePassword = $request['rePassword'];
  102. $code = $request['code'];
  103. $type = isset($request['type']) ? intval($request['type']) : 1;
  104. if (empty($username)) {
  105. return $this->outJson(0, [], '电子邮箱格式错误');
  106. }
  107. if (empty($code)) {
  108. return $this->outJson(0, [], '请输入邮箱验证码');
  109. }
  110. if (empty($password)) {
  111. return $this->outJson(0, [], '请输入新密码');
  112. }
  113. if (empty($rePassword)) {
  114. return $this->outJson(0, [], '请输入重复密码');
  115. }
  116. if ($password != $rePassword) {
  117. return $this->outJson(0, [], '2次密码不一致');
  118. }
  119. $member = new Member();
  120. $m = $member->findByUserName($username, $type);
  121. if ($m == null) {
  122. return $this->outJson(0, [], '用户不存在');
  123. }
  124. if ($m->random_code == null || $m->random_code_time == null) {
  125. return $this->outJson(0, [], '验证码错误');
  126. }
  127. if ($m->random_code != $code) {
  128. return $this->outJson(0, [], '验证码错误');
  129. }
  130. if ($m->random_code_time + 1800000 < DateTimeHelper::microtime_float()) {
  131. return $this->outJson(0, [], '验证码已过期');
  132. }
  133. $m->password = md5($password);
  134. $m->random_code = null;
  135. $m->random_code_time = null;
  136. $rs = $m->save();
  137. if ($rs) {
  138. return $this->outJson(1, [$rs], '修改成功');
  139. }
  140. }
  141. public function actionLoginByIdPassword()
  142. {
  143. $id = trim(\Yii::$app->getRequest()->post('id'));
  144. $password = trim(\Yii::$app->getRequest()->post('password'));
  145. if (empty($id)) {
  146. return $this->outJson(0, [], 'id不能为空');
  147. }
  148. if (empty($password)) {
  149. return $this->outJson(0, [], '密码不能为空');
  150. }
  151. /** @var Member $member */
  152. $member = Member::find()->where(['id' => $id])->limit(1)->one();
  153. if ($member == null) {
  154. return $this->outJson(0, [], '用户不存在');
  155. }
  156. if ($member['password'] !== $password) {
  157. return $this->outJson(0, [], '密码不正确');
  158. }
  159. return $this->outJson(1, $member->getAttributes(null, ['password']), 'OK');
  160. }
  161. }