Exemplo n.º 1
0
def create(form_user):
    email = form_user["email"]
    user_name = form_user["user_name"]
    if is_email_unique(email):
        if is_user_unique(user_name):

            first = form_user["first"]
            last = form_user["last"]
            user_name = form_user["user_name"]

            hashed = secrets.hash_password(form_user["password"])
            nonce = secrets.generate_nonce()
            nonce_time = time.time()

            create_qry = "INSERT INTO users (" \
                         "    user_name, email, temp_email, first_name, last_name, hash, nonce, nonce_timestamp" \
                         ") VALUES ( %s, %s, %s, %s, %s, %s, %s, %s )"

            time_stamp = datetime.datetime.fromtimestamp(nonce_time)

            db.execute_query(create_qry, (user_name, email, email, first, last, hashed, nonce, time_stamp))

            mail.send_confirmation(email, nonce)

            user = get_user_by_name(user_name)
            start_session(user)
            return {"error": False, "message": "Account created."}
        else:
            return {"error": True, "message": "Username is taken."}
    else:
        return {"error": True, "message": "Email is taken."}
Exemplo n.º 2
0
def end_session(user_id: Union[int, str], token: str):
    """  """
    if isinstance(user_id, int):
        user_id = str(user_id)

    args = (user_id, token)
    session_qry = "UPDATE sessions SET active = 0 WHERE user_id = %s and token = %s"

    db.execute_query(session_qry, args)
Exemplo n.º 3
0
def start_session(user_id: Union[int, str], token: str, device: str):
    """  """
    if isinstance(user_id, int):
        user_id = str(user_id)

    args = (user_id, token, device)
    session_qry = "INSERT INTO sessions ( user_id, token, device) VALUES ( %s, %s, %s )"

    db.execute_query(session_qry, args)
Exemplo n.º 4
0
def deactivate_user_by_id(user_id: Union[int, str]):
    """ deactivates a user by given id """
    if isinstance(user_id, int):
        user_id = str(user_id)

    u = get_user_by_id(user_id)

    deactivate_qry = "UPDATE users SET active = 0 WHERE user_id = %s "

    try:
        db.execute_query(deactivate_qry, (user_id,))
    except Exception as err:
        print(type(err))
Exemplo n.º 5
0
def validate_email(old_email: str, new_email: str):
    """ updates a user account to have a valid email """
    validate_qry = "UPDATE users " \
                   "SET " \
                   "    email = %s, " \
                   "    email_confirmed = 1, " \
                   "    temp_email = NULL, " \
                   "    nonce = '', " \
                   "    nonce_timestamp = NULL " \
                   "WHERE email = %s"

    args = (new_email, old_email)
    session["confirmed"] = True
    db.execute_query(validate_qry, args)
Exemplo n.º 6
0
def add_user(args: tuple):
    create_qry = "INSERT INTO users (" \
                 "    user_name, email, temp_email, first_name, last_name, hash, nonce, nonce_timestamp" \
                 ") VALUES ( %s, %s, %s, %s, %s, %s, %s, %s )"
    try:
        db.execute_query(create_qry, args)
        message = 'User \'{}\' Was created successfully'.format(args[0])
        data = get_user_by_name(args[0]).seralized
        return {"error": False, 'message': message, 'data': data}
    except psycopg2.IntegrityError as err:
        message = 'Integrity Error: {}'.format(str(err))
        return {"error": True, 'message': message, 'data': None}
    except Exception as err:
        message = 'Error: {}'.format(str(err))
        return {"error": True, 'message': message, 'data': None}
Exemplo n.º 7
0
def update_character(char):
    update_qry = "UPDATE characters " \
                 "SET " \
                 "    character_name = %s, " \
                 "    character_background = %s, " \
                 "    character_class = %s, " \
                 "    character_rank = %s, " \
                 "    rank_up = %s, " \
                 "    lance_corporal_ability = %s, " \
                 "    corporal_ability = %s, " \
                 "    sergeant_ability = %s, " \
                 "    staff_sergeant_ability = %s, " \
                 "    tech_sergeant_ability = %s, " \
                 "    gunnery_sergeant_ability = %s, " \
                 "    master_sergeant_ability = %s " \
                 "WHERE characters_id = %s "

    name = str(char.character_name)
    back = str(char.background.type[:3]).lower()
    rank = str(char.rank_value)

    if isinstance(char.character_class, str):
        class_str = str(char.character_class[:3]).upper()
    else:
        class_str = str(char.character_class.type[:3]).upper()

    ranks = str(char.ranks_available)
    char_id = str(char.id)

    lance_corporal = char.abilities["LanceCorporal"]
    corporal = char.abilities["Corporal"]
    sergeant = char.abilities["Sergeant"]
    staff_sergeant = char.abilities["StaffSergeant"]
    tech_sergeant = char.abilities["TechSergeant"]
    gunnery_sergeant = char.abilities["GunnerySergeant"]
    master_sergeant = char.abilities["MasterSergeant"]

    args = (name, back, class_str, rank, ranks, lance_corporal,
            corporal, sergeant, staff_sergeant, tech_sergeant,
            gunnery_sergeant, master_sergeant, char_id)

    db.execute_query(update_qry, args)
Exemplo n.º 8
0
def update_email(new_email: str, old_email: str) -> dict:
    """ updates the password hash in the db for a given username """
    if is_email_unique(new_email):
        update_email_qry = "UPDATE users SET temp_email = %s, email_confirmed = 0, nonce = %s, nonce_timestamp = %s " \
                           "WHERE email = %s"
        nonce = secrets.generate_nonce()
        nonce_time = time.time()
        time_stamp = datetime.datetime.fromtimestamp(nonce_time)
        args = (new_email, nonce, time_stamp, old_email)

        session["confirmed"] = False
        session["temp_email"] = new_email

        # send email verification
        mail.send_confirmation(new_email, nonce)
        # TODO: send warning to old email

        db.execute_query(update_email_qry, args)

        return {'error': False, 'message': 'Email successfully updated!'}
    else:
        message = 'Email: \"{email}\" is already in use!'.format(email=new_email)
        return {'error': False, 'message': message}
Exemplo n.º 9
0
def update_password(email: str, password: str) -> None:
    """ updates the password hash in the db for a given username """
    hashed = secrets.hash_password(password)
    update_qry = "UPDATE users SET hash = %s WHERE email = %s"
    db.execute_query(update_qry, (hashed, email))
Exemplo n.º 10
0
def update_user(db_user: User):
    update_qry = "UPDATE users SET email_confirmed = %s, admin = %s, banned = %s WHERE user_id = %s"
    args = (db_user.confirmed, db_user.admin, db_user.banned, db_user.id)
    db.execute_query(update_qry, args)
Exemplo n.º 11
0
def delete_char(char_id):
    """ deletes a character by id """
    delete_qry = "DELETE FROM characters WHERE characters_id = %s;"
    db.execute_query(delete_qry, (char_id,))
    return {"error": False, "message": "character successfully deleted"}
Exemplo n.º 12
0
def add_character(char_args: tuple) -> int:
    new_char_qry = "INSERT INTO characters ( user_id, character_name, character_background ) " \
                   "    VALUES ( %s, %s, %s ) RETURNING characters_id"
    return db.execute_query(new_char_qry, char_args)