New User creation endpoint
This commit is contained in:
102
API/Tiri.py
102
API/Tiri.py
@@ -20,61 +20,79 @@ def get_db_connection():
|
||||
except mysql.connector.Error as err:
|
||||
print(f"Error: {err}")
|
||||
return None
|
||||
|
||||
|
||||
|
||||
|
||||
# NEEDS FIXING
|
||||
@app.route('/api/tiropitAddUser', methods=['POST'])
|
||||
def tiropit_add_user():
|
||||
data = request.form
|
||||
picture = request.files.get('ProfilePicture')
|
||||
user_id = str(uuid.uuid4())
|
||||
user_name = data.get('UserName')
|
||||
steam_name = data.get('SteamName')
|
||||
steam_id = data.get('SteamID') # treat this as string
|
||||
level = int(data.get('Level', 0))
|
||||
awards = data.get('Awards', '[]')
|
||||
user_games = data.get('UserGames', '[]')
|
||||
warn_level = int(data.get('WarnLevel', 1))
|
||||
banned = data.get('Banned')
|
||||
admin_level = int(data.get('AdminLevel', 1))
|
||||
user_discord = data.get('UserDiscord')
|
||||
user_PIN = data.get('UserPIN')
|
||||
friend_code = data.get('FirendCode')
|
||||
data = request.json
|
||||
|
||||
if not picture:
|
||||
return jsonify({"error": "No profile picture provided"}), 400
|
||||
if not user_name or not steam_name or not steam_id:
|
||||
return jsonify({"error": "UserName, SteamName, and SteamID are required"}), 400
|
||||
if not data or "UserName" not in data or "UserPIN" not in data:
|
||||
return jsonify({"error": "Account MUST include at least UserName & UserPIN"}), 400
|
||||
|
||||
user_pin = data.get("UserPIN")
|
||||
friend_code = data.get("FriendCode")
|
||||
|
||||
if not friend_code or len(friend_code) != 5:
|
||||
return jsonify({"error": "FirendCode must be 5 characters long"}), 400
|
||||
if not user_PIN or len(user_PIN) != 4:
|
||||
if not user_pin or len(user_pin) != 4:
|
||||
return jsonify({"error": "UserPIN must be 4 characters long"}), 400
|
||||
|
||||
|
||||
|
||||
conn = get_db_connection()
|
||||
Cursor = conn.cursor()
|
||||
|
||||
connection = get_db_connection()
|
||||
if connection is None:
|
||||
return jsonify({"error": "Failed to contact db"}), 500
|
||||
|
||||
try:
|
||||
Cursor.execute("SELECT 1 FROM users WHERE FriendCode = %s", (friend_code,))
|
||||
if Cursor.fetchone():
|
||||
return jsonify({"error": "FriendCode already exists"}), 409
|
||||
|
||||
profile_pic = picture.read()
|
||||
cursor = connection.cursor(dictionary:true)
|
||||
user_data = {
|
||||
|
||||
"UserID" : str(uuid.uuid4()),
|
||||
"UserName" : data['UserName'],
|
||||
"UserPIN" : user_pin,
|
||||
"SteamName" : data.get('SteamName', ''),
|
||||
"Level" : data.get('Level', 0),
|
||||
"Awards" : json.dumps(data.get('Awards', '[]')),
|
||||
"ProfilePicture" : data.get('ProfilePicture', ''),
|
||||
"UserGames" : json.dumps(data.get('UserGames', '[]')),
|
||||
"WarnLevel" : data.get('WarnLevel', 0),
|
||||
"Banned" : data.get('Banned', False),
|
||||
"AdminLevel" : 0,
|
||||
"UserDiscord" : data.get('UserDiscord', ""),
|
||||
"SteamID" : data.get('SteamID', '') ,
|
||||
"FriendCode" : friend_code,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Cursor.execute("""
|
||||
INSERT INTO users (UserID, UserName, SteamName, Level, Awards, ProfilePicture, UserGames, WarnLevel, Banned, AdminLevel, SteamID, UserDiscord, UserPIN, FriendCode)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||
""", (
|
||||
user_id, user_name, steam_name, level, awards, profile_pic,
|
||||
user_games, warn_level, banned, admin_level, steam_id, user_discord, user_PIN, friend_code
|
||||
))
|
||||
conn.commit()
|
||||
except mysql.connector.Error as e:
|
||||
return jsonify({"error": str(e)}), 500
|
||||
|
||||
|
||||
query = """
|
||||
INSERT INTO users (UserID, UserName, SteamName, Level, Awards, UserGames, WarnLevel, Banned, AdminLevel, SteamID, UserDiscord, UserPIN, FriendCode)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||
"""
|
||||
|
||||
cursor.execute(query, tuple(user_data.values()))
|
||||
connection.commit()
|
||||
|
||||
return jsonify(
|
||||
{"message":"User Created",
|
||||
"UserID": user_data['UserID']}, 201
|
||||
)
|
||||
except mysql.connector.Error as err:
|
||||
connection.rollback()
|
||||
if err.errno == 1062:
|
||||
return jsonify({"error": "User already exists"}), 409
|
||||
finally:
|
||||
Cursor.close()
|
||||
conn.close()
|
||||
|
||||
return jsonify({"message": "User added successfully", "UserID": user_id}), 201
|
||||
if connection.is_connected():
|
||||
cursor.close()
|
||||
connection.close()
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host="0.0.0.0", port=5000, debug=True)
|
||||
|
||||
Reference in New Issue
Block a user