api.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from flask import Blueprint, request, jsonify
  2. from models import db, User
  3. from flask import Blueprint, request, jsonify
  4. from models import db, User, LinkCode
  5. from datetime import datetime
  6. api_bp = Blueprint('api', __name__)
  7. @api_bp.route('/link', methods=['POST'])
  8. def link_account():
  9. data = request.json
  10. code = data.get('code')
  11. uuid = data.get('uuid')
  12. username = data.get('username')
  13. if not code or not uuid or not username:
  14. return jsonify({'success': False, 'message': 'Missing data'}), 400
  15. # Check code in database
  16. link_entry = LinkCode.query.filter_by(code=code).first()
  17. if not link_entry:
  18. return jsonify({'success': False, 'message': 'Invalid code'}), 400
  19. if link_entry.expires_at < datetime.utcnow():
  20. db.session.delete(link_entry)
  21. db.session.commit()
  22. return jsonify({'success': False, 'message': 'Code expired'}), 400
  23. user = User.query.get(link_entry.user_id)
  24. if not user:
  25. return jsonify({'success': False, 'message': 'User not found'}), 404
  26. if user.minecraft_uuid:
  27. return jsonify({'success': False, 'message': 'User already linked'}), 400
  28. user.minecraft_uuid = uuid
  29. user.minecraft_username = username
  30. # Remove the used code
  31. db.session.delete(link_entry)
  32. db.session.commit()
  33. return jsonify({'success': True, 'message': f'Successfully linked to {user.username}'})