o
    hh                     @   s   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 d dlmZ d d	lmZ d d
lmZ dZdZdededdfddZG dd deZG dd deZG dd deZdS )    )Optional)messages)HttpRequest)app_settings)get_adapter)AbstractCodeVerificationProcess)"raise_if_reauthentication_required)stash_login)user_id_to_str)contextphone_verificationaccount_phone_verificationrequestphonereturnNc                 C   s   t  || d S N)r   set_phone_verified)r   userr    r   l/var/www/html/env_mimamsha/lib/python3.10/site-packages/allauth/account/internal/flows/phone_verification.pyverify_phone_indirectly      r   c                       s8   e Zd Z fddZedd Zdd Zdd Z  ZS )	PhoneVerificationProcessc                    s   t  j||tjtjd d S )N)r   statetimeoutmax_attempts)super__init__r   PHONE_VERIFICATION_TIMEOUTPHONE_VERIFICATION_MAX_ATTEMPTS)selfr   r   	__class__r   r   r      s   
z!PhoneVerificationProcess.__init__c                 C   s
   | j d S )Nr   r   r    r   r   r   r   $   s   
zPhoneVerificationProcess.phonec                 C   sJ   t  }| }|j| j|| jd d | j|t| jd |   d S )Nr   )r   coder   )r%   user_id)r    generate_phone_verification_codesend_verification_code_smsr   r   updater
   persist)r    adapterr%   r   r   r   send(   s   zPhoneVerificationProcess.sendc                 C   s:   | j d }t }|| j| |tjtjdd|i d S )Nr   z#account/messages/phone_verified.txt)	r   r   r   r   add_messager   r   r   SUCCESS)r    r   r+   r   r   r   finish3   s   
zPhoneVerificationProcess.finish)	__name__
__module____qualname__r   propertyr   r,   r/   __classcell__r   r   r!   r   r      s    
r   c                       sT   e Zd Z fddZdd Zdd Zedefdd	Zed
e	d  fddZ
  ZS )PhoneVerificationStageProcessc                    s    || _ t j|jj|jd d S N)r   r   )stager   r   loginr   r   )r    r7   r!   r   r   r   @   s   z&PhoneVerificationStageProcess.__init__c                 C   s   d S r   r   r$   r   r   r   abortD   s   z#PhoneVerificationStageProcess.abortc                 C   s   t | jj| jj d S r   )r	   r7   r   r8   r$   r   r   r   r*   G   s   z%PhoneVerificationStageProcess.persistr   c                C   s0   |j | j|jj|d t|d}|  |S )Nr   r   )r7   )r   r)   initial_stater8   r   r5   r,   )clsr7   r   processr   r   r   initiateJ   s   
z&PhoneVerificationStageProcess.initiater   c                 C   s   |j }|sd S t|}| S r   )r   r5   abort_if_invalid)r<   r7   r   r=   r   r   r   resumeQ   s
   z$PhoneVerificationStageProcess.resume)r0   r1   r2   r   r9   r*   classmethodstrr>   r   r@   r4   r   r   r!   r   r5   ?   s    r5   c                       sr   e Zd Zdedef fddZdd Zdd Z fd	d
Ze	dede
fddZe	deded  fddZ  ZS )ChangePhoneVerificationProcessr   r   c                    s   || _ t j|j|d d S r6   )r   r   r   r   )r    r   r   r!   r   r   r   [   s
   
z'ChangePhoneVerificationProcess.__init__c                 C   s   | j jtd  d S r   )r   sessionpopPHONE_VERIFICATION_SESSION_KEYr$   r   r   r   r9   b   s   z$ChangePhoneVerificationProcess.abortc                 C   s   | j | jjt< d S r   )r   r   rD   rF   r$   r   r   r   r*   e   r   z&ChangePhoneVerificationProcess.persistc                    s   t    | jjtd  d S r   )r   r/   r   rD   rE   rF   r$   r!   r   r   r/   h   s   
z%ChangePhoneVerificationProcess.finishr   c                 C   s6   t jrt| | j|j|d}t||d}|  |S )Nr:   r#   )r   REAUTHENTICATION_REQUIREDr   r;   r   rC   r,   )r<   r   r   r   r=   r   r   r   r>   l   s   z'ChangePhoneVerificationProcess.initiater   c                 C   s(   |j t}|s
d S t||d}| S )Nr#   )rD   getrF   rC   r?   )r<   r   r   r=   r   r   r   r@   v   s
   z%ChangePhoneVerificationProcess.resume)r0   r1   r2   r   dictr   r9   r*   r/   rA   rB   r>   r   r@   r4   r   r   r!   r   rC   Z   s    	 rC   )typingr   django.contribr   django.httpr   allauth.accountr   allauth.account.adapterr   0allauth.account.internal.flows.code_verificationr   /allauth.account.internal.flows.reauthenticationr   !allauth.account.internal.stagekitr	    allauth.account.internal.userkitr
   allauth.corer   PHONE_VERIFICATION_STATE_KEYrF   rB   r   r   r5   rC   r   r   r   r   <module>   s     $