
    ,Wi                     \    S SK Jr  S SKJrJrJrJrJrJr  S SK	J
r
JrJr  S rS rS rS rg)	    wraps)redirecturl_forflashgrequestjsonify)Role
PermissionSystemConfigc                 0   ^  [        T 5      U 4S j5       nU$ )u   
登录验证装饰器
c                     > [         R                  c\  [        R                  R	                  S5      S:X  a  [        S[        S5      S.5      S4$ [        SS5        [        [        S5      5      $ T" U 0 UD6$ )NX-Requested-WithXMLHttpRequest   请先登录
auth.loginerrorr     warning)	r   userr	   headersgetr
   r   r   r   argskwargsfs     F   /Users/yu22x/Desktop/ddd_副本128/ctf/app/services/auth/decorators.pydecorated_function*login_required.<locals>.decorated_function	   sl    66>""#56:JJW\EZ[\^aaa .),GL122$!&!!    r   r   r    s   ` r   login_requiredr$      s#     1X	" 	" r"   c                    ^  U 4S jnU$ )u   
权限验证装饰器
c                 4   >^  [        T 5      U U4S j5       nU$ )Nc                     > [         R                  (       a$  [         R                  R                  T5      (       d   [        SS5        [	        [        S5      5      $ T" U 0 UD6$ )Nu   权限不足r   
main.index)r   r   has_permissionr   r   r   )r   r   r   
permissions     r   r    Bpermission_required.<locals>.decorator.<locals>.decorated_function   sH    66!6!6z!B!Bng. 566d%f%%r"   r   )r   r    r*   s   ` r   	decorator&permission_required.<locals>.decorator   s!    	q	& 
	&
 "!r"    )r*   r,   s   ` r   permission_requiredr/      s    " r"   c                 0   ^  [        T 5      U 4S j5       nU$ )uJ   
管理员权限验证装饰器 - 允许 admin 和 moderator 访问后台
c                    > [         R                  c\  [        R                  R	                  S5      S:X  a  [        S[        S5      S.5      S4$ [        SS5        [        [        S5      5      $ [         R                  R                  [        R                  [        R                  4;  a\  [        R                  R	                  S5      S:X  a  [        S[        S	5      S.5      S
4$ [        SS5        [        [        S	5      5      $ T" U 0 UD6$ )Nr   r   r   r   r   r   r   u$   权限不足，需要管理员权限r(     r   )r   r   r	   r   r   r
   r   r   r   roler   ADMIN	MODERATORr   s     r   r    *admin_required.<locals>.decorated_function(   s     66>""#56:JJW\EZ[\^aaa .),GL122 66;;tzz4>>::""#56:JJ)O]deq]rstvyyy8'BGL122$!&!!r"   r   r#   s   ` r   admin_requiredr7   $   s#     1X" "( r"   c                 0   ^  [        T 5      U 4S j5       nU$ )u?   
超级管理员权限验证装饰器 - 仅允许 admin 访问
c                    > [         R                  c\  [        R                  R	                  S5      S:X  a  [        S[        S5      S.5      S4$ [        SS5        [        [        S5      5      $ [         R                  R                  [        R                  :w  a\  [        R                  R	                  S5      S:X  a  [        S[        S	5      S.5      S
4$ [        SS5        [        [        S	5      5      $ T" U 0 UD6$ )Nr   r   r   r   r   r   r   u*   权限不足，需要超级管理员权限r(   r2   r   )r   r   r	   r   r   r
   r   r   r   r3   r   r4   r   s     r   r    /superadmin_required.<locals>.decorated_functionD   s     66>""#56:JJW\EZ[\^aaa.),GL122 66;;$**$""#56:JJ)Ucjkwcxyz|>HGL122$!&!!r"   r   r#   s   ` r   superadmin_requiredr;   @   s#     1X" "  r"   N)	functoolsr   flaskr   r   r   r   r	   r
   app.models.database.modelsr   r   r   r$   r/   r7   r;   r.   r"   r   <module>r?      s(     ? ? E E"8r"   