Files
invitation/backend/src/user.py

84 lines
3.1 KiB
Python

#!/usr/bin/env python
# encoding: utf-8
'''
user.py is a source for all user endpoints.
'''
from flask import request, jsonify
import os
def registerUserEndpoints(app, database):
@app.route('/users/isSet', methods=['GET'])
def user_is_set():
user_name = request.args.get('userName')
try:
query = "SELECT * FROM users WHERE Name=%s"
result = database.query(query, params=(user_name,))
return jsonify(bool(result and result[0][2])), 200
except mysql.connector.Error as err:
# Log the error or handle it as necessary
app.logger.error(f"Error: {err}")
return jsonify({"error": "Database error occurred"}), 500
except Exception as e:
# Handle unexpected errors
app.logger.error(f"Unexpected error: {e}")
return jsonify({"error": "Internal server error"}), 500 # Check if password exists
@app.route('/users/createPassword', methods=['POST'])
def create_password():
data = request.json
user_name = data.get('userName')
password = data.get('password')
# Check if the user already exists
query = "SELECT * FROM users WHERE Name=%s"
result = database.query(query, params=(user_name,))
if result:
return jsonify(success=False, message='Пользователь уже создан'), 400
query = "INSERT INTO users (Name, Password) VALUES (%s, %s)"
try:
database.query(query, params=(user_name, password))
# Generate a session token
token = os.urandom(16).hex()
session_query = "INSERT INTO sessions (Token, Name) VALUES (%s, %s)"
database.query(session_query, params=(token,user_name))
return jsonify(success=True, token=token), 201 # Return success with token
except Exception as e:
return jsonify(success=False, message='Ошибка при создании пароля: ' + str(e)), 500
@app.route('/login', methods=['POST'])
def login():
data = request.json
user_name = data.get('userName')
password = data.get('password')
query = "SELECT * FROM users WHERE Name=%s AND Password=%s"
result = database.query(query, params=(user_name, password))
if result:
token = os.urandom(16).hex() # Example token generation
session_query = "INSERT INTO sessions (Token, Name) VALUES (%s, %s)"
database.query(session_query, params=(token, user_name))
return jsonify(success=True, token=token), 200
return jsonify(success=False), 401
@app.route('/login/validateToken', methods=['POST'])
def validate_token():
data = request.json
token = data.get('token')
user_name = data.get('userName')
query = "SELECT * FROM sessions WHERE Token=%s AND Name=%s"
try:
result = database.query(query, params=(token, user_name))
return jsonify(tokenValid=bool(result)), 200
except Exception as e:
return jsonify(success=False, message=str(e)), 500