async def _get_tokens( user: User = None, uid: int = None, permissions: List[int] = None, response_cls: Type[BaseModel] = ResponseRefreshAccessToken, ): if user: uid = user.id permissions = user.permissions if not permissions: raise web.HTTPBadRequest now = datetime.utcnow().replace(tzinfo=timezone.utc) access_expire = now + timedelta(seconds=app_config.jwt.access_token_expire) refresh_expire = now + timedelta(seconds=app_config.jwt.refresh_token_expire) access = jwt.encode( { 'uid': uid, 'permissions': permissions, 'exp': int(access_expire.timestamp()), 'type': 'access', }, app_config.jwt.sig, ) refresh = jwt.encode( { 'uid': uid, 'permissions': permissions, 'exp': int(refresh_expire.timestamp()), 'type': 'refresh', }, app_config.jwt.sig, ) if user: await Token.create( refresh_token=refresh, expired_at=refresh_expire, user=user, ) else: user = User() user.refresh_token = refresh user.access_token = access response_model = response_cls.from_orm(user) response = web.json_response(response_model.dict()) response.set_cookie('accessKey', access, max_age=app_config.jwt.access_token_expire) return response
def get_user_info(): if 'qq_token' in session: user = User_qq.query.filter_by(qq_openid=session['openid']).first() if user is None: data = update_qq_api_request_data() resp = qq.get('/user/get_user_info', data=data) userinfo = json.loads(resp.data.decode()) user = User() user.username = userinfo['nickname'] user.avatar = userinfo['figureurl_qq_2'] user.access_token = session['qq_token'][0] user.reg_ip = request.remote_addr db.session.add(user) db.session.commit() if user.id: user_qq = User_qq() user_qq.qq_openid = session['openid'] user_qq.uid = user.id db.session.add(user_qq) db.session.commit() data = { 'msg': 'ok', 'stats': 0, 'data': { 'id': user.id, 'nickname': userinfo['nickname'], 'avatar': userinfo['figureurl_qq_2'] } } session['uid'] = user.id session['nickname'] = userinfo['nickname'] session['avatar'] = userinfo['figureurl_qq_2'] return jsonify(data) user = User.query.filter_by( access_token=session['qq_token'][0]).first() data = { 'msg': 'ok', 'stats': 200, 'data': { 'id': user.id, 'nickname': user.username, 'avatar': user.avatar } } session['uid'] = user.id session['nickname'] = user.username session['avatar'] = user.avatar return jsonify(data) return redirect('/api/login')
return redirect(url_for('home')) except DropboxOAuth2Flow.ProviderException, e: app.logger.exception("Auth error" + e) abort(403) if dropbox_id is None: return redirect(url_for('home')) user = User.query.filter_by(dropbox_id=dropbox_id).first() new_user = user is None if user is None: user = User(dropbox_id) user.set_new_emailer() db.session.add(user) user.access_token = access_token (user.name, user.email) = get_dropbox_name_email(access_token) db.session.commit() if new_user: analytics.track(str(user.id), 'Registered') analytics.track(str(user.id), 'Logged in') session['dropbox_id'] = user.dropbox_id return redirect(url_for('home')) @app.route('/dropbox-unlink') def dropbox_unlink(): dropbox_id = session.get('dropbox_id')