AuthController.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. declare(strict_types=1);
  3. namespace app\miniapi\controller;
  4. use support\Request;
  5. use support\Response;
  6. use support\annotation\route\DisableDefaultRoute;
  7. use app\miniapi\http\Input;
  8. use app\miniapi\service\AuthService;
  9. use app\miniapi\auth\LoginThrottle;
  10. use app\miniapi\service\TestPhoneLogin;
  11. #[DisableDefaultRoute]
  12. final class AuthController extends BaseController
  13. {
  14. public function login(Request $request): Response
  15. {
  16. // Do not trust arbitrary X-Forwarded-For headers to bypass login throttling.
  17. (new LoginThrottle())->consume($request->getRemoteIp());
  18. return $this->success($request, (new AuthService())->login(Input::json($request)));
  19. }
  20. public function logout(Request $request): Response
  21. {
  22. return $this->success($request, (new AuthService())->logout(substr($request->header('authorization'), 7)));
  23. }
  24. public function testPhone(Request $request): Response
  25. {
  26. (new LoginThrottle())->consume($request->getRemoteIp());
  27. $login = new TestPhoneLogin();
  28. $login->assertSourceAllowed($request->getRemoteIp());
  29. return $this->success($request, $login->login(Input::json($request)));
  30. }
  31. }