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)
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()
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
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()
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.")
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