Exemplo n.º 1
0
    def post():
        """
        Method saves a new admin user.
        :return: a success message / error message
        """
        data = _user_parser.parse_args()
        if data['secret_key'] == ADMIN_SECRET_KEY:
            if UserModel.find_user_by_username(data["username"]):
                logging.info("User already exists")
                return {"message": "User already exists"}, 400

            if data['team'] != 'Support':
                logging.info(
                    "User team not correct. This command is to create Support members."
                )
                return {
                    "message":
                    "User team not correct. This command is to create Support members."
                }, 400

            user = UserModel(
                data["username"],
                hashlib.sha256(data["password"].encode("utf-8")).hexdigest(),
                'Support')
            user.save_to_db()
            logging.info("User {} created".format(data["username"]))
            return {"message": "User {} created".format(data["username"])}
        else:
            logging.info(
                "Unloged users cannot created users without a correct secret_key"
            )
            return {
                "message":
                "Unloged users cannot created users without a correct secret_key"
            }, 400
Exemplo n.º 2
0
    def post():
        """
        Method saves a new user.
        Can only be done if the user logged in is a support team user.
        :return: a success message / error message
        """
        data = _user_parser.parse_args()
        user = get_current_user()
        if user:
            user_team = UserModel.find_user_by_id(user).team
            if user_team == 'Support':
                if UserModel.find_user_by_username(data["username"]):
                    logging.info("User already exists")
                    return {"message": "User already exists"}, 400

                if data['team'] not in POSSIBLE_TEAMS:
                    logging.info(
                        "User team not correct. It has to be one of the following ones:"
                        + ', '.join(POSSIBLE_TEAMS))
                    return {
                        "message":
                        "User team not correct. It has to be one of the following ones:"
                        + ', '.join(POSSIBLE_TEAMS)
                    }, 400

                user = UserModel(
                    data["username"],
                    hashlib.sha256(
                        data["password"].encode("utf-8")).hexdigest(),
                    data['team'])
                user.save_to_db()
                logging.info("User {} created".format(data["username"]))
                return {"message": "User {} created".format(data["username"])}
            else:
                logging.info("Non authorized user")
                return {"message": "Non authorized user"}, 400
        else:
            logging.info("Unlogged users cannot create other users")
            return {"message": "Unlogged users cannot create other users"}, 400
Exemplo n.º 3
0
    def post():
        """
        This method checks if the user that is trying to login is a registered user, and returns authentication data
        :return: a dict with authentication tokens / an error message
        """
        data = _user_parser.parse_args()

        user = UserModel.find_user_by_username(data["username"])

        if user and user.password == hashlib.sha256(
                data["password"].encode("utf-8")).hexdigest():
            access_token = create_access_token(
                identity=user.id,
                fresh=True)  # Puts User ID as Identity in JWT
            refresh_token = create_refresh_token(
                identity=user.id)  # Puts User ID as Identity in JWT
            logging.info("Login credentials obtained")
            return {
                "access_token": access_token,
                "refresh_token": refresh_token
            }
        logging.info("Invalid credentials")
        return {"message": "Invalid credentials"}, 401