get('account', ''); if (!$account) { return $this->error(ERROR_CODE_PARAM_INVALID, '缺少参数:account'); } $nonce = uniqid() . '_' . md5(time()); return $this->success($nonce); } public function mateMaskLogin(Request $request) { $account = strtolower($request->get('account', '')); $tips = strtolower($request->get('tips', '')); $nonce = strtolower($request->get('nonce', '')); $signature = strtolower($request->get('signature', '')); $param = [ 'c' => 'BcService', 'a' => 'authVerifySignature', 'tips' => $tips, 'nonce' => $nonce, 'signature' => $signature ]; $response = Http::get(env('WEB3_SERVE_URL'), $param); if (!$response->successful()) { return $this->error(ERROR_CODE_INTERNAL_ERROR, 'WEB3服务出现错误'); } $res = $response->json(); if (! isset($res['recovered'])){ return $this->error(ERROR_CODE_INTERNAL_ERROR, 'Signature verification failed'); } if(! $this->isSameAddress($res['recovered'],$account)){ return $this->error(ERROR_CODE_INTERNAL_ERROR, 'Signature verification failed'); } $user = User::withTrashed()->firstOrCreate([ 'account' => $account ]); if($user->trashed()) { return $this->error(ERROR_CODE_PERMISSION_NO,'账号号已禁用, 无法登陆'); } $user['token'] = $user->createToken('api')->accessToken; return $this->success($user); } /** * 退出登录 * @return \Illuminate\Http\JsonResponse */ public function logout (Request $request) { $request->user()->token()->revoke(); return $this->success(); } private function isSameAddress($a,$b){ return strtolower($a) == strtolower($b); } }