
    /Ge]                         d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZmZ  G d	 d
e          ZdS )    N)settings)	AuthTokenloginTbl)HttpResponse)	dbsession)SQLAlchemyError)status
exceptions)get_authorization_headerBaseAuthenticationc                   *    e Zd ZdZd Zd Zd Zd ZdS )TokenAuthenticationNc                     t           S )N)r   )selfs    /Users/admin/Documents/Codsair Technologies R&D/Git new/IDPWOA/Idpwoa_Backend/Idpwoa_Backend/userrestframeworkTokenAuthenticaion.py	get_modelzTokenAuthentication.get_model   s        c                 8   t          j                    }t          |                                          }|r|d                                         dk    rd S t          |          dk    rd}t          j        |          t          |          dk    rd}t          j        |          	 |d         }|dk    rd}t          j        |          n$# t          $ r d	}t          j        |          w xY w|	                                 | 
                    |          S )
Nr   s   bearer   z.Invalid token header. No credentials provided.   zInvalid token headernullzNull token not allowedzIInvalid token header. Token string should not contain invalid characters.)r   Sessionr   splitlowerlenr
   AuthenticationFailedUnicodeErrorcloseauthenticate_credentials)r   requestsessionauthmsgtokens         r   authenticatez TokenAuthentication.authenticate   s)   #%%'006688 	tAw}})3 	4t99> 	7BC1#666YY] 	7(C1#666	7GEf} ;. 5c:::;  	7 	7 	7]C1#666	7 	,,U333s   *$C !C0c                 0   t          j                    }	 t          j        |t          j        dg          }nS# t          j        $ rA}t          |           |                                 ddd}t          j
        |          d }~ww xY w|r|d         }|d         }dddd	}	 	 |                    t                                        t          j        |k    t          j        |k                                              }nd# t"          $ rW}t          d
|           |                                 |                                 dddd	}t          j
        |          d }~ww xY w	 |                    t&                                        |                                          }n9# t"          $ r,}t          d|           t          j
        ddd          d }~ww xY w	 |                    t                                        ||                                          }	n<# t"          $ r/}t          |           |                                 d }	Y d }~nd }~ww xY wd|	j                            d          z   }
|
|k    st          j
        |          t,          j                            |d                                          t,          j                                        k     rt          j
        ddd          n# t          j        $ r t7          dddd          cY S t          j        t          j        f$ r t7          dddd          cY S t"          $ r}t7          dddd          cY d }~S d }~ww xY w|                                 ||fS )NHS256)
algorithmsErrorzToken mismatch)responsemessageuser_idexpiry401)r*   r+   r	   zToken Not Exitz!Token mismatch or Token not found)useridzUser not ExitzToken is invalid)r,   keyr   zutf-8z%Y-%m-%dzToken Expired.zToken is expired403)r	   zInternal server error500)r   r   jwtdecoder   
SECRET_KEYDecodeErrorprintrollbackr
   r   queryr   filterr,   r0   oner   r   r   	filter_byencodedatetimestrptimedatetodayExpiredSignatureErrorr   InvalidTokenError)r   r$   r!   payloader#   r,   r-   user
auth_tokenstored_tokens              r   r   z,TokenAuthentication.authenticate_credentials*   s   #%%	7j(;	RRRGG 	7 	7 	7!HHH%1ABBC1#666		7  	'i(GX&F!-=NN$	g;}}Y//66y7H'7QR[R_afRfggkkmm" ; ; ;&***  """")5Xchii 5c:::;}}X..888HHLLNN"   oa((( 5'Tf6g6ghhh"$]]955??TY?ZZ^^``

" " " "a  """!





" *.!8!8!A!AAL5( ; 5c::: ))&*==BBDDx}GZGZG\G\\ g 5'Td6e6efffg ( 	d 	d 	dWAS T T]bcccccc!67 	d 	d 	dWAS T T]bcccccc 	g 	g 	gG?V W W`efffffffff	ge}s   "8 B<BB%AD L 
E#AEE##L 'A F( 'L (
G2'GGL "AH$ #L $
I.%IL IB#L #M=&.M=	M=M82M=8M=c                     dS )NBearer )r   r    s     r   authenticate_headerz'TokenAuthentication.authenticate_headera   s    xr   )__name__
__module____qualname__modelr   r%   r   rL   rK   r   r   r   r      sV        E  4 4 4,5 5 5n    r   r   )r3   jsonr>   django.confr   idpwoa.modelsr   r   django.httpr   Idpwoa_Backendr   sqlalchemy.excr   rest_frameworkr	   r
   rest_framework.authenticationr   r   r   rK   r   r   <module>rY      s    



               , , , , , , , , $ $ $ $ $ $ $ $ $ $ $ $ * * * * * * - - - - - - - - V V V V V V V VU U U U U, U U U U Ur   