Login.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. /**
  3. +-----------------------------------------------------------------------------------------------
  4. * GouGuOPEN [ 左手研发,右手开源,未来可期!]
  5. +-----------------------------------------------------------------------------------------------
  6. * @Copyright (c) 2021~2024 http://www.gouguoa.com All rights reserved.
  7. +-----------------------------------------------------------------------------------------------
  8. * @Licensed 勾股OA,开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息
  9. +-----------------------------------------------------------------------------------------------
  10. * @Author 勾股工作室 <hdm58@qq.com>
  11. +-----------------------------------------------------------------------------------------------
  12. */
  13. declare (strict_types = 1);
  14. namespace app\home\controller;
  15. use app\home\validate\UserCheck;
  16. use think\exception\ValidateException;
  17. use think\facade\Db;
  18. use think\facade\Session;
  19. class Login
  20. {
  21. //登录
  22. public function index()
  23. {
  24. $wxwork = is_wxwork();
  25. $mobile = is_mobile();
  26. if($wxwork){
  27. return redirect('/qiye/login/login');
  28. }
  29. if($mobile){
  30. return redirect('/qiye/login/index');
  31. }
  32. return View();
  33. }
  34. //提交登录
  35. public function login_submit()
  36. {
  37. $param = get_params();
  38. try {
  39. validate(UserCheck::class)->check($param);
  40. } catch (ValidateException $e) {
  41. // 验证失败 输出错误信息
  42. return to_assign(1, $e->getError());
  43. }
  44. $admin = Db::name('Admin')->where(['username' => $param['username'],'delete_time' => 0])->find();
  45. if (empty($admin)) {
  46. $admin = Db::name('Admin')->where(['mobile' => $param['username'],'delete_time' => 0])->find();
  47. if (empty($admin)) {
  48. return to_assign(1, '用户名或手机号码错误');
  49. }
  50. }
  51. $param['pwd'] = set_password($param['password'], $admin['salt']);
  52. if ($admin['pwd'] !== $param['pwd']) {
  53. return to_assign(1, '用户或密码错误');
  54. }
  55. if ($admin['status'] != 1) {
  56. return to_assign(1, '该用户禁止登录,请与管理者联系');
  57. }
  58. $data = [
  59. 'is_lock' => 0,
  60. 'last_login_time' => time(),
  61. 'last_login_ip' => request()->ip(),
  62. 'login_num' => $admin['login_num'] + 1,
  63. ];
  64. Db::name('admin')->where(['id' => $admin['id']])->update($data);
  65. $session_admin = get_config('app.session_admin');
  66. Session::set($session_admin, $admin['id']);
  67. $token = make_token();
  68. set_cache($token, $admin, 7200);
  69. $admin['token'] = $token;
  70. $logdata = [
  71. 'uid' => $admin['id'],
  72. 'type' => 'login',
  73. 'action' => '登录',
  74. 'subject' => '系统',
  75. 'param_id'=>$admin['id'],
  76. 'param'=>'[]',
  77. 'ip' => request()->ip(),
  78. 'create_time' => time()
  79. ];
  80. Db::name('AdminLog')->strict(false)->field(true)->insert($logdata);
  81. return to_assign(0, '登录成功', ['uid' => $admin['id']]);
  82. }
  83. //退出登录
  84. public function login_out()
  85. {
  86. $session_admin = get_config('app.session_admin');
  87. Session::delete($session_admin);
  88. return to_assign(0, "退出成功");
  89. }
  90. //锁屏
  91. public function lock()
  92. {
  93. $session_admin = get_config('app.session_admin');
  94. $admin_id= Session::get($session_admin);
  95. $admin = Db::name('admin')->where(['id' => $admin_id])->find();
  96. if (request()->isAjax()) {
  97. $param = get_params();
  98. if($param['lock_password'] == ''){
  99. return to_assign(1, '请输入登录密码解锁');
  100. }
  101. if(empty($admin)){
  102. return to_assign(2, '登录超时,请重新登录');
  103. }
  104. $pwd = set_password($param['lock_password'], $admin['salt']);
  105. if ($admin['pwd'] !== $pwd) {
  106. return to_assign(1, '密码错误');
  107. }
  108. else{
  109. Db::name('admin')->where('id',$admin['id'])->update(['is_lock'=>0]);
  110. return to_assign(0, '解锁成功', ['uid' => $admin['id']]);
  111. }
  112. }
  113. Db::name('admin')->where('id',$admin['id'])->update(['is_lock'=>1]);
  114. return View();
  115. }
  116. }