Beispiel #1
0
    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
Beispiel #2
0
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')
Beispiel #3
0
        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')
Beispiel #4
0
        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')