71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
"""认证相关路由"""
|
|
from flask import Blueprint, request, jsonify
|
|
from flask_jwt_extended import jwt_required, get_jwt_identity, create_access_token
|
|
from services.auth_service import AuthService
|
|
from services.user_service import UserService
|
|
|
|
auth_bp = Blueprint('auth', __name__)
|
|
|
|
@auth_bp.route('/send-verification-code', methods=['POST'])
|
|
def send_verification_code():
|
|
"""发送验证码"""
|
|
data = request.get_json()
|
|
result, status_code = AuthService.send_verification_code(data)
|
|
return jsonify(result), status_code
|
|
|
|
@auth_bp.route('/register', methods=['POST'])
|
|
def register():
|
|
"""用户注册 - 需要验证码"""
|
|
data = request.get_json()
|
|
result, status_code = AuthService.register(data)
|
|
return jsonify(result), status_code
|
|
|
|
@auth_bp.route('/login', methods=['POST'])
|
|
def login():
|
|
"""用户登录"""
|
|
data = request.get_json()
|
|
result, status_code = AuthService.login(data)
|
|
return jsonify(result), status_code
|
|
|
|
@auth_bp.route('/me', methods=['GET'])
|
|
@jwt_required()
|
|
def get_current_user():
|
|
"""获取当前用户信息"""
|
|
current_user_id = get_jwt_identity()
|
|
result, status_code = UserService.get_profile(current_user_id)
|
|
return jsonify(result), status_code
|
|
|
|
@auth_bp.route('/change-password', methods=['POST'])
|
|
@jwt_required()
|
|
def change_password():
|
|
"""修改密码"""
|
|
current_user_id = get_jwt_identity()
|
|
data = request.get_json()
|
|
result, status_code = AuthService.change_password(current_user_id, data)
|
|
return jsonify(result), status_code
|
|
|
|
@auth_bp.route('/reset-password', methods=['POST'])
|
|
def reset_password():
|
|
"""重置密码 - 需要验证码"""
|
|
data = request.get_json()
|
|
result, status_code = AuthService.reset_password(data)
|
|
return jsonify(result), status_code
|
|
|
|
@auth_bp.route('/verify-code', methods=['POST'])
|
|
def verify_code():
|
|
"""验证验证码是否有效(不标记为已使用)"""
|
|
data = request.get_json()
|
|
result, status_code = AuthService.verify_code(data)
|
|
return jsonify(result), status_code
|
|
|
|
@auth_bp.route('/refresh', methods=['POST'])
|
|
@jwt_required(refresh=True)
|
|
def refresh():
|
|
"""刷新访问令牌"""
|
|
current_user_id = get_jwt_identity()
|
|
access_token = create_access_token(identity=current_user_id)
|
|
|
|
return jsonify({
|
|
'access_token': access_token
|
|
}), 200
|