
    mid                     t    S SK Jr  S SKJrJrJrJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  S rSS
 jrg	)    wraps)jsonifyrequestgsession)verify_token)find_principal_by_id)find_teacher_by_id)find_school_by_id)error_responsec                 0   ^  [        T 5      U 4S j5       nU$ )Nc                  x   >  T" U 0 UD6$ ! [          a$  n[        S[        U5      SS.5      S4s S nA$ S nAff = f)NFzInternal server error)successerrormessagei  )	Exceptionr   str)argskwargsefuncs      =D:\beyond school\05_solvesmart\server\src\utils\decorators.pywrapper"handle_exceptions.<locals>.wrapper
   sQ    	((( 	 Q2  	 	s    
9499r   )r   r   s   ` r   handle_exceptionsr   	   s     
4[  N    Nc                    ^ ^ UU 4S jnU$ )Nc                 6   >^  [        T 5      U UU4S j5       nU$ )Nc                    > [        [        S5      (       a8  [        [        S5      (       a#  T(       a  [        R                  T:X  a  T" U 0 UD6$ [        R                  " S5      (       a  T(       a  T" U 0 UD6$ [
        R                  R	                  S5      nU(       d  T(       a  T" U 0 UD6$ [        SS5      $ [        U5      u  p4U(       a  T(       a!  TU:w  a  T(       a  T" U 0 UD6$ [        SS5      $ S n[        [        S5      (       a9  [        [        S5      (       a$  [        R                  U:X  a  [        R                  nU(       d  US	:X  a  [        U5      nO?US
:X  a  [        U5      nO-US:X  a  [        U5      nOT(       a  T" U 0 UD6$ [        SS5      $ U(       d,  T(       a  T" U 0 UD6$ [        UR                  5        S3S5      $ U[        l	        U[        l        T" U 0 UD6$ )Ncurrent_usercurrent_rolestudent
auth_tokenzNo active user foundi  zInvalid or unauthorized tokeni  teacher	principalschoolzInvalid rolez
 not foundi  )hasattrr   r"   r   getr   cookiesr   r	   r!   r   r
   r   
capitalize)	r   r   tokenuser_id	user_roleuserr   optionalroles	         r   r   2token_required.<locals>.decorator.<locals>.wrapper   s    q.))ga.H.Hq~~5000 {{9%%000 OO''5E000%&<cBB ".e!4Gt	(9000%&EsKK Dq.))ga.H.H>>Y.>>D 	)-g6D+-/8D(*,W5D#T4V44).#>>#T4V44)Y-A-A-C,DJ*OQTUU!%!*(((r   r   )r   r   r0   r1   s   ` r   	decorator!token_required.<locals>.decorator   s!    	t5	) 
5	)n r    )r1   r0   r3   s   `` r   token_requiredr6      s    9t r   )NF)	functoolsr   flaskr   r   r   r   src.lib.jwtr	   src.services.principalsr
   src.services.teachersr   src.services.schoolsr   src.utils.responser   r   r6   r5   r   r   <module>r>      s'     . . $ 8 4 2 -;r   