def get(cls):
        resp = github.authorized_response()

        if resp is None or resp.get("access_token") is None:
            error_response = {
                "error": request.args["error"],
                "error_description": request.args["error_description"]
            }
            return error_response

        g.access_token = resp['access_token']
        github_user = github.get('user')
        github_username = github_user.data['login']

        user = UserModel.find_by_username(github_username)

        if not user:
            user = UserModel(username=github_username, password=None)
            user.save_to_db()
            confirmation = ConfirmationModel(user.id)
            confirmation.confirmed = True
            confirmation.expire_at = 0
            confirmation.save_to_db()

        access_token = create_access_token(identity=user.id, fresh=True)
        refresh_token = create_refresh_token(user.id)

        return {
            "access_token": access_token,
            "refresh_token": refresh_token
        }, 200
Example #2
0
    def post(cls):
        user = user_schema.load(request.get_json())

        if UserModel.find_by_email(user.email):
            return {"message": "Email already exist"}, 400

        if UserModel.find_by_contact(user.contact):
            return {"message": "contact already registered"}, 400

        try:
            user.save_to_db()
            confirmation = ConfirmationModel(user.id)
            confirmation.confirmed = False
            confirmation.save_to_db()
            res = user.send_confirmation_email()
            return {"message": "User created"}, 201
        except:
            traceback.print_exc()
            user.delete_from_db()
            return {"message": "User creating error"}, 500