Login.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace app\controller\common;
  3. use app\extra\basic\Base;
  4. use app\middleware\AuthMiddleware;
  5. use app\model\system\SystemUser;
  6. use Hzdad\Codecheck\Codecheck;
  7. use LinFly\Annotation\Route\Controller;
  8. use LinFly\Annotation\Route\Route;
  9. use Shopwwi\WebmanAuth\Auth;
  10. use support\Request;
  11. use support\Response;
  12. use think\facade\Db;
  13. use Tinywan\Captcha\Captcha;
  14. use LinFly\Annotation\Route\Middleware;
  15. #[Controller(prefix: "/api/login")]
  16. class Login extends Base
  17. {
  18. /**
  19. * 登陆
  20. * @param Request $request
  21. * @return Response
  22. */
  23. #[Route(path: "user",methods: "post")]
  24. public function setLogin(Request $request): Response
  25. {
  26. try {
  27. $param = $this->_valid([
  28. "username.require" => trans("empty.user"),
  29. "password.require" => trans("empty.passwd"),
  30. "code.require" => trans("empty.code"),
  31. "key.require" => trans("empty.data"),
  32. ],"post");
  33. if (!is_array($param)) return error($param);
  34. if (Captcha::check($param['code'],$param['key']) === false) return errorTrans("error.captcha");
  35. $map = ["is_deleted" => 0,"username" => $param['username']];
  36. [$state,$msg,$user] = $this->checkLogin($map,2,$param);
  37. if (!$state) return error($msg);
  38. return successTrans("success.login",get_object_vars((new Auth)->guard("admin")->login($user)));
  39. } catch (\Throwable $throwable) {
  40. return error($throwable->getMessage());
  41. }
  42. }
  43. /**
  44. * 登录验证处理
  45. * @param array $map
  46. * @param int $type
  47. * @param array $param
  48. * @return array
  49. */
  50. protected function checkLogin(array $map = [],int $type = 1,array $param = []): array
  51. {
  52. $user = (new SystemUser)->where($map)->findOrEmpty();
  53. if ($user->isEmpty()) return [0,trans("error.user-empty"),[]];
  54. if ($user['status'] <> 1) return [0,trans("error.user-status"),[]];
  55. if ($type == 2) {
  56. if (md5($param['password'].$user['salt']) <> $user['password']) return [0,trans("error.passwd"),[]];
  57. }
  58. $user->login_at = getDateFull();
  59. $user->login_ip = request()->getRealIp();
  60. $user->login_num = Db::raw("login_num+1");
  61. $user->save();
  62. return [1,'success',$user->toArray()];
  63. }
  64. /**
  65. * @return Response
  66. */
  67. #[Route(path: "profile",methods: "get"),Middleware(AuthMiddleware::class)]
  68. public function getLoginUser(): Response
  69. {
  70. try {
  71. $userData = (new Auth)->guard("admin")->user()->toArray();
  72. if (isset($userData['password'])) unset($userData['password']);
  73. return successTrans("success.data",[
  74. "username" => $userData['username'],
  75. "truename" => $userData['truename'],
  76. "agent_id" => $userData['agent_id'],
  77. "super" => $userData['is_super'],
  78. "type" => $userData['type']
  79. ]);
  80. } catch (\Throwable $exception){
  81. return error($exception->getMessage());
  82. }
  83. }
  84. }