[ 'phone_area' => 'required|alpha_dash:ascii|max:5', 'phone' => 'required|numeric|max:15', 'password' => 'required|alpha_dash:ascii|max:50', 'device' => 'required|numeric|max:10', 'vr_code' => 'required|numeric|max:10', ], 'register' => [ 'phone_area' => 'required|alpha_dash:ascii|max:5', 'phone' => 'required|numeric|max:15', 'password' => 'required|alpha_dash:ascii|max:50', 'device' => 'required|numeric|max:2', 'vr_code' => 'required|numeric|max:10', ], 'checkAccount' => [ 'username' => 'alpha_dash:ascii|max:50', 'phone_area' => 'alpha_dash:ascii|max:5', 'phone' => 'numeric|max:15', 'email' => 'email|max:30', ], 'updateUserInfo' => [ 'nickname' => 'max:20', 'email' => 'email|max:30', 'username' => 'alpha_dash:ascii|max:50', 'phone_area' => 'alpha_dash:ascii|max:5', 'phone' => 'numeric|max:15', 'is_google_auth' => 'numeric|max:2', ], ]; function getCustomerUserInfo(): \Illuminate\Http\JsonResponse { $oAuthService = new AuthService(); $token = $oAuthService->getTokenFromReq(); $aUser = $oAuthService->getCurrentUser(); $data = [ 'token' => $token, 'user' => [ 'id' => $aUser['id'], 'username' => $aUser['username'], 'nickname' => $aUser['nickname'], 'is_google_auth' => $aUser['is_google_auth'], 'created_at' => $aUser['created_at'], 'updated_at' => $aUser['updated_at'], ], ]; return $this->success($data); } /** * @throws AppException */ function signIn(): \Illuminate\Http\JsonResponse { $request = request(); $phone_area = $request->input('phone_area'); $phone = $request->input('phone'); $password = $request->input('password'); $vrcode = $request->input('vrcode'); $device = $request->input('device'); if (!in_array($device, Im::PLATFORM)) return $this->error('invalid device'); $oCustomerUser = new CustomerUserModel(); $oUser = $oCustomerUser->findItemByPhone($phone_area, $phone); if (!$oUser) { return $this->error('用户名不存在'); } if (!empty($vrcode)) { //phone login //check vrcode $oVrCodeService = new VrCodeService(); $oVrCodeService->setIType(VrCode::TOPIC_LOGIN); $oVrCodeService->setSPhoneArea($phone_area); $oVrCodeService->setSPhone($phone); if (!$oVrCodeService->checkCode($vrcode)) return $this->error('验证码错误'); } elseif (!empty($password)) { //password login if (!$oCustomerUser->checkPasswd($oUser->id, $password)) { return $this->error('密码错误'); } } else { return $this->error('登录失败'); } $oAuthService = new AuthService(); $oImService = new ImService(); $token = $oAuthService->createTokenToUser($oUser->id, $device); $imToken = $oImService->authUserToken($oUser->id, $device); $data = [ 'token' => $token, 'im_token' => $imToken, 'user' => [ 'id' => $oUser->id, 'username' => $oUser->username, 'nickname' => $oUser->nickname, 'is_google_auth' => $oUser->is_google_auth, 'created_at' => $oUser->created_at, 'updated_at' => $oUser->updated_at, ], ]; return $this->success($data); } function updateUserInfo(): \Illuminate\Http\JsonResponse { $request = request(); $aReqData = $request->only([ 'nickname', 'username', 'email', 'phone_area', 'phone', 'is_google_auth', ]); $oAuthService = new AuthService(); $aUser = $oAuthService->getCurrentUser(); $aReqData['id'] = $aUser['id']; $aReqData = array_filter($aReqData); $oCustomerUser = new CustomerUserModel(); if (!$oCustomerUser->updateItem($aReqData)) return $this->error(); return $this->success(); } function signOut(): \Illuminate\Http\JsonResponse { $oAuthService = new AuthService(); $token = $oAuthService->getTokenFromReq(); $aUser = $oAuthService->getCurrentUser(); $oAuthService->delTokenToUser($aUser['id'], $token); return $this->success(); } function register(): \Illuminate\Http\JsonResponse { $request = request(); $phone_area = $request->input('phone_area'); $phone = $request->input('phone'); $password = $request->input('password'); $device = $request->input('device'); $sVrCode = $request->input('vr_code'); //check vrcode $oVrCodeService = new VrCodeService(); $oVrCodeService->setIType(VrCode::TOPIC_REGISTER); $oVrCodeService->setSPhoneArea($phone_area); $oVrCodeService->setSPhone($phone); if (!$oVrCodeService->checkCode($sVrCode)) return $this->error('验证码错误'); $oCustomerUser = new CustomerUserModel(); $oUser = $oCustomerUser->findItemByPhone($phone_area, $phone); if ($oUser) { return $this->error('用户名已存在'); } $oUser = $oCustomerUser->addUser([ 'phone_area' => $phone_area, 'phone' => $phone, 'password' => $password, 'nickname' => 'user_' . Tools::generateRandStr(10), ]); if (!$oUser) { return $this->error('注册失败'); } //向im注册 $oImService = new ImService(); if (!$oImService->userUserRegister($oUser->id)) throw new AppException('im register error'); $oAuthService = new AuthService(); $token = $oAuthService->createTokenToUser($oUser->id, $device); $data = [ 'token' => $token, 'user' => [ 'id' => $oUser->id, 'username' => $oUser->username, 'nickname' => $oUser->nickname, 'is_google_auth' => $oUser->is_google_auth, 'created_at' => $oUser->created_at, 'updated_at' => $oUser->updated_at, ], ]; return $this->success($data); } function checkAccount() { $request = request(); $aReqData = $request->only([ 'username', 'email', 'phone_area', 'phone', ]); $aReqData = array_filter($aReqData); if (empty($aReqData)) return $this->error(); $oCustomerUser = new CustomerUserModel(); $oUser = $oCustomerUser->findItemByAccount($aReqData, ['id']); if ($oUser) { return $this->error('用户已存在'); } return $this->success(); } }