ó
    ±)j5  ã                   óL  • S SK J r JrJr  S SKJr  S SKrS SKJrJrJ	r	J
r
  S SKJr  S SKJrJr  S SKJr  \R$                  r\R&                  rSrS	r\" S
SS9rS\S\4S jrS\S\S\4S jrSS\S\\   S\4S jjr\" \5      4S\	S\\   S\4S jjr\" \5      4S\S\4S jjrg)é    )ÚdatetimeÚ	timedeltaÚtimezone)ÚOptionalN)ÚDependsÚHTTPExceptionÚRequestÚstatus)ÚOAuth2PasswordBearer)ÚJWTErrorÚjwt)Úsettingsé<   ÚWorkTools_tokenÚloginF)ÚtokenUrlÚ
auto_errorÚpasswordÚreturnc                 ó˜   • U R                  S5      n[        R                  " 5       n[        R                  " X5      R	                  S5      $ )uH   Ð¥ÐµÑˆÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿Ð°Ñ€Ð¾Ð»Ñ� Ð´Ð»Ñ� Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� Ð² Ð‘Ð”.úutf-8)ÚencodeÚbcryptÚgensaltÚhashpwÚdecode)r   Ú	pwd_bytesÚsalts      Ú1D:\OneDrive\Python\workToolsAPI\app\users\auth.pyÚget_password_hashr       s6   € à—‘ Ó(€IÜ�>Š>Ó€DÜ�=Š=˜Ó)×0Ñ0°Ó9Ð9ó    Úplain_passwordÚhashed_passwordc                 ól   • [         R                  " U R                  S5      UR                  S5      5      $ )u_   ÐŸÑ€Ð¾Ð²ÐµÑ€ÐºÐ° Ñ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²Ð¸Ñ� Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ð°Ñ€Ð¾Ð»Ñ� Ñ…ÐµÑˆÑƒ Ð¸Ð· Ð‘Ð”.r   )r   Úcheckpwr   )r"   r#   s     r   Úverify_passwordr&      s/   € ä�>Š>Ø×Ñ˜gÓ&Ø×Ñ˜wÓ'óð r!   ÚdataÚexpires_deltac                 óJ  • U R                  5       nU(       a(  [        R                  " [        R                  5      U-   nO2[        R                  " [        R                  5      [        [        S9-   nUR                  SU05        [        R                  " U[        [        S9nU$ )u)   Ð¡Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ JWT access Ñ‚Ð¾ÐºÐµÐ½Ð°.)ÚminutesÚexp)Ú	algorithm)Úcopyr   Únowr   Úutcr   ÚACCESS_TOKEN_EXPIRE_MINUTESÚupdater   r   Ú
SECRET_KEYÚ	ALGORITHM)r'   r(   Ú	to_encodeÚexpireÚencoded_jwts        r   Úcreate_access_tokenr7   )   sn   € à—	‘	“€IÞÜ—’œhŸl™lÓ+¨mÑ;‰ä—’œhŸl™lÓ+¬iÔ@[Ñ.\Ñ\ˆà×Ñ�e˜V�_Ô%Ü—*’*˜Y¬
¼iÑH€KØÐr!   ÚrequestÚheader_tokenc              ƒ   óö   #   • U R                   R                  [        5      nU(       a,  UR                  S5      (       a  UR	                  S5      S   $ U$ U(       a  U$ [        [        R                  SSS0S9e7f)uO   Ð˜Ð·Ð²Ð»ÐµÐºÐ°ÐµÑ‚ Ñ‚Ð¾ÐºÐµÐ½ Ð¸Ð· Cookies (web) Ð¸Ð»Ð¸ Bearer Header (mobile).zBearer Ú é   u8   Ð¢Ð¾ÐºÐµÐ½ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚úWWW-AuthenticateÚBearer©Ústatus_codeÚdetailÚheaders)ÚcookiesÚgetÚCOOKIE_NAMEÚ
startswithÚsplitr   r
   ÚHTTP_401_UNAUTHORIZED)r8   r9   Úcookie_tokens      r   Úget_token_from_cookie_or_headerrJ   9   sy   é € ð —?‘?×&Ñ&¤{Ó3€LÞà×"Ñ" 9×-Ñ-Ø×%Ñ% cÓ*¨1Ñ-Ð-ØÐö ØÐô Ü×0Ñ0ØIØ# XÐ.ñð ùs   ‚A7A9Útokenc              ƒ   óÒ   #   • [        [        R                  SSS0S9n [        R                  " U [
        [        /S9nUR                  S5      nUc  Ue U$ ! [         a    Uef = f7f)u‰   Ð”ÐµÐºÐ¾Ð´Ð¸Ñ€ÑƒÐµÑ‚ Ñ‚Ð¾ÐºÐµÐ½ Ð¸ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ username (sub). Ð”Ð°Ð½Ð½ÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÑŽÑ‚ Ð² Ñ€Ð¾ÑƒÑ‚Ñ‹.uH   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ð°Ð»Ð¸Ð´Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ ÑƒÑ‡ÐµÑ‚Ð½Ñ‹Ðµ Ð´Ð°Ð½Ð½Ñ‹Ðµr=   r>   r?   )Ú
algorithmsÚsub)	r   r
   rH   r   r   r2   r3   rD   r   )rK   Úcredentials_exceptionÚpayloadÚusernames       r   Úget_current_userrR   R   sy   é € ä)Ü×0Ñ0ØYØ# XÐ.ñÐð
$Ü—*’*˜U¤J¼I¸;ÑGˆØŸ™ EÓ*ˆØÑØ'Ð'ð ð €Oøô ó $Ø#Ð#ð$üs   ‚A'Ÿ5A ÁA'ÁA$Á$A')N)r   r   r   Útypingr   r   Úfastapir   r   r	   r
   Úfastapi.securityr   Újoser   r   Ú
app.configr   r2   r3   r0   rE   Úoauth2_schemeÚstrr    Úboolr&   Údictr7   rJ   rR   © r!   r   Ú<module>r]      sê   ðß 2Ñ 2Ý Û ß ;Ó ;Ý 1ß å ð × Ñ €
Ø×Ñ€	Ø Ð Ø€ñ %¨gÀ%ÑH€ð: ð :¨ô :ð Cð ¸#ð À$ô ñ
˜dð 
°8¸IÑ3Fð 
ÐRUõ 
ñ$ '.¨mÓ&<ñØðà˜s‘mðð 	õñ2 )0Ð0OÓ(Pñ  #ð ÐUXö r!   