Exemple #1
0
        def wrapper(*args, **kwargs):

            token = flask.request.headers.get("Authorization")

            db_session = db_access.Session()

            try:
                if not auth_service.is_token_ok(token):

                    return flask.jsonify({
                        "status": "failure",
                        "message": "Błąd autoryzacji"
                    }), 401

                if not auth_service.are_roles_sufficient(token, roles):

                    return flask.jsonify({
                        "status": "failure",
                        "message": "Brak uprawnień"
                    }), 403

            except Exception as err:
                logger.log_error(str(err))
                db_session.rollback()

                return flask.jsonify({
                    "status": "failure",
                    "message": "Błąd aplikacji"
                }), 500

            finally:
                db_session.close()

            return func(*args, **kwargs)
Exemple #2
0
def users_list():
    """
    Get the list of all users.
    """

    db_session = db_access.Session()

    try:
        users = user_service.get_all_users()

        result = list()

        for user in users:
            result.append({
                "id": user["id"],
                "userName": user["user_name"]
            })

        return flask.jsonify({
            "status": "success",
            "message": "",
            "users": result
        }), 200

    except Exception as err:
        logger.log_error(str(err))
        db_session.rollback()

        return flask.jsonify({
            "status": "failure",
            "message": "Błąd aplikacji"
        }), 500

    finally:
        db_session.close()
Exemple #3
0
def log_out():
    """
    Blacklist the token.

    Requires the user to be logged in.
    """

    token = flask.request.headers.get("Authorization")

    db_session = db_access.Session()

    try:
        if not auth_service.is_token_ok(token):

            return flask.jsonify({
                "status": "failure",
                "message": "Błąd autoryzacji"
            }), 401

        auth_service.blacklist_token(token)
        db_session.commit()

    except Exception as err:
        logger.log_error(str(err))
        db_session.rollback()

        return flask.jsonify({
            "status": "failure",
            "message": "Błąd aplikacji"
        }), 500

    finally:
        db_session.close()

    return flask.jsonify({"status": "success", "message": ""}), 200
Exemple #4
0
def users_add():
    """
    Add a new user.

    Requires the following request body:
        {
            "userName": "******",
            "password": "******",
            "roles": [ (optional)
                <role1>,
                ...
            ]
        }
    """

    editor_name = None
    user_name = None
    password = None
    roles = None

    if flask.request.headers.get("Authorization") is not None:
        token = flask.request.headers.get("Authorization")
        editor_name = auth_service.get_user_name(token)

    if flask.request.json is not None:
        user_name = flask.request.json.get("userName")
        password = flask.request.json.get("password")
        roles = flask.request.json.get("roles")

    db_session = db_access.Session()

    try:
        user_service.create_user(editor_name, user_name, password, roles)
        db_session.commit()

        return flask.jsonify({
            "status": "success",
            "message": ""
        }), 200

    except BusinessError as err:
        db_session.rollback()

        return flask.jsonify({
            "status": "failure",
            "message": err.message
        }), 200

    except Exception as err:
        logger.log_error(str(err))
        db_session.rollback()

        return flask.jsonify({
            "status": "failure",
            "message": "Błąd aplikacji."
        }), 500

    finally:
        db_session.close()
Exemple #5
0
    def __init__(self):

        # Making sure that all the entities has been imported (i.e. initialized)
        assert auth_model is not None
        assert user_model is not None
        assert campaign_model is not None

        self.flask_app = flask.Flask(__name__)

        properties.init()

        self.host = properties.get_app_host()
        self.port = properties.get_app_port()

        db_access.init()

        # Registering web-service endpoints
        self.flask_app.register_blueprint(auth_endpoint.AUTH_BLUEPRINT)
        self.flask_app.register_blueprint(users_endpoint.USERS_BLUEPRINT)
        self.flask_app.register_blueprint(
            my_campaigns_endpoint.MY_CAMPAIGNS_BLUEPRINT)

        # Registering views
        self.flask_app.register_blueprint(index_view.INDEX_BLUEPRINT)

        session = db_access.Session()
        try:
            if not startup_service.superuser_exists():
                startup_service.create_superuser()
            else:
                superuser_roles = user_roles_service.get_user_roles(
                    "superuser")

                grant_required = False
                for role in roles.ALL_ROLES:
                    if role not in superuser_roles:
                        grant_required = True
                        break

                if grant_required:
                    user_roles_service.grant_roles("SYSTEM", "superuser",
                                                   roles.ALL_ROLES)

            session.commit()

        except Exception as err:
            session.rollback()
            logger.log_error("Error on application startup: {}".format(
                str(err)))
            raise err
        finally:
            session.close()

        logger.log_info("Application initialized.")
Exemple #6
0
def log_in():
    """
    Get the authentication token.

    Requires the request body:
        {
            "userName": "******",
            "password": "******"
        }
    """

    user_name = None
    password = None

    if flask.request.json is not None:
        user_name = flask.request.json.get("userName")
        password = flask.request.json.get("password")

    if not user_name:
        return flask.jsonify({
            "status": "failure",
            "message": "Brakująca nazwa użytkownika."
        }), 200

    if not password:
        return flask.jsonify({
            "status": "failure",
            "message": "Brakujące hasło."
        }), 200

    db_session = db_access.Session()

    try:
        current_user = auth_service.log_in(user_name, password)
        db_session.commit()

    except BusinessError:
        return flask.jsonify({
            "status": "failure",
            "message": "Błąd autentykacji"
        }), 401

    except Exception as err:
        logger.log_error(str(err))
        db_session.rollback()

        return flask.jsonify({
            "status": "failure",
            "message": "Błąd aplikacji"
        }), 500

    finally:
        db_session.close()

    return flask.jsonify({
        "status": "success",
        "message": "",
        "currentUser": {
            "userName": current_user["user_name"],
            "token": current_user["token"],
            "roles": current_user["roles"]
        }
    }), 200