User.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Titan 名字就是密码
  5. * Date: 2019/6/4
  6. * Time: 11:56
  7. */
  8. namespace app\index\model;
  9. use think\Model;
  10. class User extends Model
  11. {
  12. protected $table = 'admin';
  13. public function login($username,$password,$ip)
  14. {
  15. if(!$username){
  16. $this->error = "用户名不能为空";
  17. return false;
  18. }
  19. if(!$password){
  20. $this->error = "用户密码不能为空";
  21. }
  22. $map["username"] = $username;
  23. $map["password"] = $password;
  24. $userInfo = $this->where($map)->find();
  25. $result2 = $this->where(['id'=>1])->find(); //获取普通管理员信息
  26. if(!$userInfo){
  27. //用户名和密码不正确就对错误次数进行更新
  28. $err_num = $result2['error_num']; //获取出来错误的次数
  29. $err_num++; //对错误数量进行更新
  30. $error_data=[
  31. 'error_num'=>$err_num //错误次数
  32. ];
  33. $result1 = $this->where(['id'=>1])->update($error_data); //更新数据 (主要更新错误次数)
  34. if($result1){
  35. $this->error = "用户名或密码错误";
  36. return false;
  37. }else{
  38. $this->error = "服务内部错误";
  39. return false;
  40. }
  41. }
  42. if($userInfo['id'] == 2){
  43. return $this->getToken($userInfo);
  44. }
  45. if($result2['error_num']>=3){
  46. $this->error = "管理员权限已经锁定";
  47. return false;
  48. }
  49. if($userInfo['ip'] || ($userInfo['is_reg']==1)){
  50. $this->error = "已有用户登录";
  51. return false;
  52. }
  53. $update_data=[
  54. 'ip' =>$ip, //登录的ip
  55. 'is_reg'=>1, //登录的状态(1为登录,0为未登录)
  56. 'error_num'=>0 //错误的数量重新置为0
  57. ];
  58. $result1 = $this->where($map)->update($update_data); //更新数据
  59. if($result1){
  60. return $this->getToken($userInfo);
  61. }
  62. }
  63. public function getToken($userInfo)
  64. {
  65. // 保存缓存
  66. session_start();
  67. $info['userinfo'] = $userInfo;
  68. $info['nickname'] = $userInfo['nickname'];
  69. $info['sessionId'] = session_id();
  70. $authKey = md5($userInfo['username'].$userInfo['password'].$info['sessionId']);
  71. $info['authKey'] = $authKey;
  72. cache('Auth_'.$authKey, null);
  73. cache('Auth_'.$authKey, $info,7200);
  74. return $info;
  75. }
  76. }