Explorar el Código

feat: user_loader鉴权

SongZihuan hace 2 años
padre
commit
5b39dde3e4
Se han modificado 1 ficheros con 7 adiciones y 2 borrados
  1. 7 2
      app/login.py

+ 7 - 2
app/login.py

@@ -1,7 +1,7 @@
 from functools import wraps
 from flask import abort
 from flask_login import LoginManager, current_user
-from .db import AnonymousUser, User
+from .db import AnonymousUser, User, Role
 
 
 login = LoginManager()
@@ -11,7 +11,12 @@ login.login_view = "auth.passwd_login_page"
 
 @login.user_loader
 def user_loader(user_id: int):
-    return User.query.filter_by(id=user_id).first()
+    user = User.query.filter_by(id=user_id).first()
+    if user is None:
+        return None
+    if user.role.has_permission(Role.USABLE):
+        return user
+    return None
 
 
 def role_required(role: int):