| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- <?php
- namespace App\Module\AppGame\Handler\Public;
- use App\Module\AppGame\Events\LoginSuccessEvent;
- use App\Module\AppGame\Handler\BaseHandler;
- use App\Module\AppGame\SessionApp;
- use App\Module\User\Validation\LoginValidation;
- use Google\Protobuf\Internal\Message;
- use Illuminate\Support\Facades\Event;
- use Uraus\Kku\Request\RequestPublicLogin;
- use Uraus\Kku\Response\ResponsePublicLogin;
- use Uraus\Kku\Response\LastLoginInfo;
- /**
- * 处理用户登录请求
- */
- class LoginHandler extends BaseHandler
- {
- /**
- * 是否需要登录
- *
- * @var bool
- */
- protected bool $need_login = false;
- /**
- * 处理登录请求
- *
- * @param RequestPublicLogin $data 登录请求数据
- * @return ResponsePublicLogin 登录响应
- */
- public function handle(Message $data): Message
- {
- // 验证
- $validation = LoginValidation::makeByProrobuf($data);
- $validation->validated();
- $user = $validation->user;
- // 验证 通过
- // 调用逻辑
- // 设置用户登录状态
- SessionApp::setLogin($user);
- $sessionId = SessionApp::getSessionId();
- // 触发登录成功事件
- Event::dispatch(new LoginSuccessEvent($user, $sessionId));
- // 调用逻辑 完成
- // 创建响应对象
- $response = new ResponsePublicLogin();
- $response->setToken($sessionId);
- return $response;
- }
- }
|