| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- <?php
- declare(strict_types=1);
- namespace app\miniapi\controller;
- use support\Request;
- use support\Response;
- use support\annotation\route\DisableDefaultRoute;
- use app\miniapi\http\ClientIp;
- use app\miniapi\http\Input;
- use app\miniapi\service\AuthService;
- use app\miniapi\auth\LoginThrottle;
- use app\miniapi\service\TestPhoneLogin;
- use app\miniapi\service\SmsLogin;
- #[DisableDefaultRoute]
- final class AuthController extends BaseController
- {
- public function login(Request $request): Response
- {
- // ClientIp ignores the header unless the TCP peer is a configured proxy, so an
- // untrusted caller still cannot forge an address to bypass login throttling.
- (new LoginThrottle())->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 sendSms(Request $request): Response
- {
- // Throttled like the other login entry points: one caller must not be able to
- // spend the SMS balance of the whole account.
- (new LoginThrottle())->consume(ClientIp::resolve($request));
- return $this->success($request, (new SmsLogin())->sendCode(Input::json($request), ClientIp::resolve($request)));
- }
- public function phoneLogin(Request $request): Response
- {
- (new LoginThrottle())->consume(ClientIp::resolve($request));
- return $this->success($request, (new SmsLogin())->login(Input::json($request)));
- }
- public function testPhone(Request $request): Response
- {
- (new LoginThrottle())->consume(ClientIp::resolve($request));
- return $this->success($request, (new TestPhoneLogin())->login(Input::json($request)));
- }
- }
|