
    Ki                     h    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
  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)AuthService)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     ?   /Users/yu22x/Desktop/ddd_副本6/ctf/app/services/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_requiredr0      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_requiredr8   %   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)   r3   r   )r   r   r	   r   r   r
   r   r   r   r4   r   r5   r   s     r    r!   /superadmin_required.<locals>.decorated_functionE   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<   A   s#     1X" "  r#   N)	functoolsr   flaskr   r   r   r   r	   r
   app.services.authr   app.models.database.modelsr   r   r   r%   r0   r8   r<   r/   r#   r    <module>rA      s+     ? ? ) E E"8r#   