
    _vgn                     n    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gZ G d	 d          Zd
S )    )	urlencode)login)AnonymousUser)redirect   )settings)get_userAuthenticationMiddlewarec                   P    e Zd ZdZd Zd Zd Zed             Zed             Z	dS )r
   ax  
    Look for a signed token in the URL of any request and log a user in.

    After login, remove the token from the URL with an HTTP redirect.

    .. admonition:: This functionality requires additional setup for Safari.
        :class: warning

        :class:`AuthenticationMiddleware` requires the optional ``ua`` extra to
        prevent :ref:`issues with Safari <Safari issues>`:

        .. code-block:: console

            $ pip install 'django-sesame[ua]'

    In the :setting:`MIDDLEWARE` setting,
    ``"sesame.middleware.AuthenticationMiddleware"`` should be placed just after
    ``"django.contrib.auth.middleware.AuthenticationMiddleware"``:

    .. code-block:: python

        MIDDLEWARE = [
            ...,
            "django.contrib.auth.middleware.AuthenticationMiddleware",
            "sesame.middleware.AuthenticationMiddleware",
            ...,
        ]

    c                     || _         d S N)get_response)selfr   s     N/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/sesame/middleware.py__init__z!AuthenticationMiddleware.__init__,   s    (    c                 V    |                      |          p|                     |          S r   )process_requestr   )r   requests     r   __call__z!AuthenticationMiddleware.__call__/   s+     ##G,,J0A0A'0J0JJr   c                 l   t          |t          |d          rdnd          }t          |d          rW|Ut          ||           t          |d          r5|j        dk    r*|                     |          s|                     |          S t          |d          s||nt                      |_        dS dS )a  
        Log user the in if ``request`` contains a valid token.

        Return an HTTP redirect response that removes the token from the URL
        after a successful login (except on Safari to avoid triggering ITP,
        and only when sessions are enabled).

        sessionFN)update_last_loginuserGET)r	   hasattrr   method	is_safariget_redirectr   r   )r   r   r   s      r   r   z(AuthenticationMiddleware.process_request4   s     '.w	'B'BLee
 
 
 7I&& 	24+;'4    ((2Ne++w// , ((111 w'' 	I#'#344GLLL	I 	Ir   c                     	 ddl m} | j                            dd          }|                    |          }|d         d         dk    p|d         d         d	k    S # t
          $ r Y d S w xY w)
Nr   )user_agent_parserHTTP_USER_AGENT 
user_agentfamilySafariosiOS)	ua_parserr!   METAgetParseImportError)r   r!   r$   	parsed_uas       r   r   z"AuthenticationMiddleware.is_safari\   s    
	333333 !))*;R@@J)//
;;I,'1X= 6T?8,5  	 	 	44	s   A 
A*)A*c                     | j                                         }|                    t          j                   | j        }|r|dt          |          z   z  }t          |          S )zX
        Create an HTTP redirect response that removes the token from the URL.

        ?)r   copypopr   
TOKEN_NAMEpathr   r   )r   paramsurls      r   r   z%AuthenticationMiddleware.get_redirectj   s^     !!##

8&'''l 	+36****C}}r   N)
__name__
__module____qualname____doc__r   r   r   staticmethodr   r    r   r   r
   r
      s         <) ) )K K K
&I &I &IP   \ 
 
 \
 
 
r   N)urllib.parser   django.contrib.authr   django.contrib.auth.modelsr   django.shortcutsr   r#   r   utilsr	   __all__r
   r<   r   r   <module>rC      s    " " " " " " % % % % % % 4 4 4 4 4 4 % % % % % %            %
&h h h h h h h h h hr   