consume(ClientIp::resolve($request)); return $this->success($request, (new AuthService())->login(Input::json($request))); } public function logout(Request $request): Response { return $this->success($request, (new AuthService())->logout(substr($request->header('authorization'), 7))); } public function testPhone(Request $request): Response { // Throttling and the source allowlist must judge the same caller; sharing one // resolved address here is what keeps a local proxy from opening this endpoint. $source = ClientIp::resolve($request); (new LoginThrottle())->consume($source); $login = new TestPhoneLogin(); $login->assertSourceAllowed($source); return $this->success($request, $login->login(Input::json($request))); } }