
    f                         d dl mZ d dlmZmZ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 d dlm
Z
 d dlmZ d d	lmZ  G d
 d      Zd Zed        Zdeeeef      fdZy)    )contextmanager)AnyDictOptional)SimpleLazyObjectempty)app_settings)LoginStageController)unstash_login)ImmediateHttpResponse)Client)
sessionkitc                   8    e Zd Zd Zed        Zd Zed        Zy)AuthenticationStatusc                     || _         y N)request)selfr   s     \/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/headless/internal/authkit.py__init__zAuthenticationStatus.__init__   s	        c                 B    | j                   j                  j                  S r   )r   useris_authenticated)r   s    r   r   z%AuthenticationStatus.is_authenticated   s    ||  111r   c                     d }| j                   s?t        | j                  d      }|r&t        | j                  |      }|j	                         }|S )NT)peek)r   r   r   r
   get_pending_stage)r   stageloginctrls       r   r   z&AuthenticationStatus.get_pending_stage   sF    $$!$,,T:E+DLL%@..0r   c                     t         j                  syddlm} t	        |j
                  j                  | j                              S )NFr   )flows)allauth_settingsSOCIALACCOUNT_ENABLEDallauth.socialaccount.internalr"   boolsignupget_pending_signupr   )r   r"   s     r   has_pending_signupz'AuthenticationStatus.has_pending_signup    s/    558ELL33DLLABBr   N)__name__
__module____qualname__r   propertyr   r   r)    r   r   r   r      s6     2 2 C Cr   r   c                     dD ]  }t        | |      st        | |        t        | j                  t              rt
        | j                  _        y y )N)_cached_user_acached_user)hasattrdelattr
isinstancer   r   r   _wrapped)r   attrs     r   purge_request_user_cacher7   )   sG    1 #7D!GT"# ',, 01 % 2r   c              #     K   ddl m} | j                  }| j                  }	 t	        j
                         | _        t        |        t        j                  }|j                  |       }|r8|j                  |      }|st         || d            || _        t        |        | j                  | j                  j                  _        | j                  j                  j                  j                   d  | j                  j                   r4| j                  j#                         s| j                  j%                          || _        || _        d| j&                  d<   y # | j                  j                   r4| j                  j#                         s| j                  j%                          || _        || _        d| j&                  d<   w xY ww)Nr   )UnauthorizedResponsei  )statusFCSRF_COOKIE_NEEDS_UPDATE)allauth.headless.base.responser9   r   sessionr   new_sessionr7   r	   TOKEN_STRATEGYget_session_tokenlookup_sessionr   allauthheadless	_pre_userpkmodifiedis_emptysaveMETA)r   r9   old_userold_sessionstrategysession_tokenr=   s          r   authentication_contextrN   1   sS    C||H//K9$002 ).. 227;--m<G+,@QT,UVV%GO$W--4\\  *  **--??##GOO,D,D,FOO  "%38/0 ??##GOO,D,D,FOO  "%38/0s   GCE 4A(GA)GGreturnc                 v   | j                   j                  j                  t        j                  k7  ry| j
                  j                  sy| j                   j                  j                  }|j                  r$|j                  | j
                  j                  k(  ryt        j                  }|j                  |       S )z?
    Determines if a new access token needs to be exposed.
    N)rB   rC   clientr   APPr   r   rD   rE   r	   r?   create_access_token_payload)r   pre_userrL   s      r   expose_access_tokenrU   P   s     &&&**4<<((''11H  X[[GLLOO%C**H//88r   N)
contextlibr   typingr   r   r   django.utils.functionalr   r   rB   r	   r#   allauth.account.stagesr
   allauth.account.utilsr   allauth.core.exceptionsr   allauth.headlessallauth.headless.constantsr   allauth.headless.internalr   r   r7   rN   strrU   r.   r   r   <module>r`      sd    % & & ; 4 7 / 9 ) - 0C C4& 9 9<9HT#s(^$< 9r   