python
def has_permission(user, permission):
for role in user.roles:
if permission in [r.name for r in role.permissions]:
return True
return False
这里假设每个角色都有自己的权限列表。为了简化,我们可以直接在角色对象上存储权限名称。
5、完整示例
完整的应用程序可能看起来像这样:
python
from flask import Flask, request, jsonify
@app.route('/login', methods=['POST'])
def login():
data = request.get_json()
user = User.query.filter_by(username=data['username']).first()
if not user:
return jsonify({'message': 'User not found'}), 404
return jsonify({'message': 'Login successful', 'roles': [r.name for r in user.roles]}), 200
@app.route('/check-permission', methods=['POST'])
def check_permission():
data = request.get_json()
user = User.query.filter_by(username=data['username']).first()
if not user:
return jsonify({'message': 'User not found'}), 404
permission = data['permission']
if has_permission(user, permission):
return jsonify({'message': f'User has {permission} permission'}), 200
else:
return jsonify({'message': f'User does not have {permission} permission'}), 403