o
    h8                     @   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mZmZmZmZ d dlmZ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!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z: d dl;m<Z< G dd de7Z=G dd de7Z>eeddddG dd de7Z?eeddddG dd de7Z@G dd  d e7ZAG d!d" d"e7ZBG d#d$ d$e7ZCG d%d& d&e7ZDeed'dddG d(d) d)e7ZEeed*dddG d+d, d,e8ZFeed-dddG d.d/ d/e8ZGeed0dddG d1d2 d2e8ZHeed3dddG d4d5 d5e8ZId6S )7    )
HTTPStatus)method_decorator)app_settings)get_adapter)flows)email_verificationmanage_emailpassword_changepassword_resetpassword_reset_by_code)EmailVerificationStageLoginStageControllerPhoneVerificationStage)send_email_confirmation)	ratelimit)ImmediateHttpResponse)
rate_limit)response)AddEmailInputChangePasswordInputChangePhoneInputConfirmLoginCodeInputDeleteEmailInput
LoginInputMarkAsPrimaryEmailInputReauthenticateInputRequestLoginCodeInputRequestPasswordResetInputResetPasswordInputResetPasswordKeyInputSelectEmailInputSignupInputVerifyEmailInputVerifyPhoneInput)APIResponseAuthenticationResponseConflictResponseForbiddenResponse)APIViewAuthenticatedAPIView)authkit)ErrorResponsec                   @      e Zd ZeZdd ZdS )RequestLoginCodeViewc                 O   s:   t jjj| j| jj| jjd| jjdd t	| jS )Nemailphone)requestuserr.   r/   )
r   login_by_codeLoginCodeVerificationProcessinitiater0   input_usercleaned_datagetr%   selfr0   argskwargs r=   Y/var/www/html/env_mimamsha/lib/python3.10/site-packages/allauth/headless/account/views.pypost9   s   
zRequestLoginCodeView.postN)__name__
__module____qualname__r   input_classr?   r=   r=   r=   r>   r-   6       r-   c                       s@   e Zd ZeZ fddZdd Z fddZ fddZ  Z	S )	ConfirmLoginCodeViewc                    s\   t |}| | _| jst|S tjj| j| _	| j	s!t|S t
 j|g|R i |S N)r*   AuthenticationStatusget_pending_stagestager&   r   r2   r3   resumeprocesssuperdispatch)r:   r0   r;   r<   auth_status	__class__r=   r>   rM   F   s   

zConfirmLoginCodeView.dispatchc                 O   s   | j d }t||S rF   )rK   finishr%   from_responser:   r0   r;   r<   r   r=   r=   r>   r?   R   s   zConfirmLoginCodeView.postc                    s   t   }| jj|d< |S Ncode)rL   get_input_kwargsrK   rU   )r:   r<   rO   r=   r>   rV   V   s   
z%ConfirmLoginCodeView.get_input_kwargsc                       | j   t |S rF   rK   record_invalid_attemptrL   handle_invalid_inputr:   r5   rO   r=   r>   rZ   [      
z)ConfirmLoginCodeView.handle_invalid_input)
r@   rA   rB   r   rC   rM   r?   rV   rZ   __classcell__r=   r=   rO   r>   rE   C   s    rE   login)actionhandle)namec                   @   r,   )	LoginViewc                 O   s8   |j jrt|S | jj}tj||| jj}t	||S rF   )
r1   is_authenticatedr&   r5   r7   r   r^   perform_password_loginr%   rR   )r:   r0   r;   r<   credentialsr   r=   r=   r>   r?   d   s   
zLoginView.postN)r@   rA   rB   r   rC   r?   r=   r=   r=   r>   rb   `   s    rb   signupc                   @   s    e Zd ZdeiZdZdd ZdS )
SignupViewPOSTFc                 O   sp   |j jrt|S t |st|S | j|\}}|s2ztj	j
||| jd}W n	 ty1   Y nw t||S )N)r1   
by_passkey)r1   rc   r&   get_account_adapteris_open_for_signupr'   r5   try_saver   rf   complete_signupri   r   r%   rR   )r:   r0   r;   r<   r1   respr=   r=   r>   r?   s   s   
zSignupView.postN)r@   rA   rB   r!   rC   ri   r?   r=   r=   r=   r>   rg   n   s    rg   c                   @   s   e Zd Zdd Zdd ZdS )SessionViewc                 O   s   t |S rF   )r%   r9   r=   r=   r>   r8         zSessionView.getc                 O   s   t  }|| t|S rF   )rj   logoutr%   )r:   r0   r;   r<   adapterr=   r=   r>   delete   s   
zSessionView.deleteN)r@   rA   rB   r8   rs   r=   r=   r=   r>   ro      s    ro   c                       sJ   e Zd ZeZ fddZdd Zdef fddZdd	 Zd
d Z	  Z
S )VerifyEmailViewc                    sp   t |tj| _| jstjr|jjst	|S d | _
tjr+tjj|| _
| j
s+t	|S t j|g|R i |S rF   )r   enterr   keyrI   account_settings"EMAIL_VERIFICATION_BY_CODE_ENABLEDr1   rc   r&   rK   r   email_verification_by_codeEmailVerificationProcessrJ   rL   r`   r9   rO   r=   r>   r`      s"   zVerifyEmailView.handlec                 C   s
   d| j iS )NrK   rK   r:   r=   r=   r>   rV      s   
z VerifyEmailView.get_input_kwargsr5   c                    s   | j r| j   t |S rF   rX   r[   rO   r=   r>   rZ      s   
z$VerifyEmailView.handle_invalid_inputc                 O   sj   |j dd}| jd|i| jd}| s | j  t||dS | jr(| jj}n|jj}t	j
||| jdS )Nzx-email-verification-key rv   r{   r5   )rI   )headersr8   rC   rK   is_validrY   r+   email_addressverificationr   VerifyEmailResponserI   )r:   r0   r;   r<   rv   r5   r   r=   r=   r>   r8      s   

zVerifyEmailView.getc                 O   sT   | j r	| j  }n| jj|}|st|tjdS d }| jr$t	
||}t||S )Nstatus)rK   rQ   r5   r   confirmr$   r   INTERNAL_SERVER_ERRORrI   r   login_on_verificationr%   rR   )r:   r0   r;   r<   r   r   r=   r=   r>   r?      s   zVerifyEmailView.post)r@   rA   rB   r"   rC   r`   rV   rZ   r8   r?   r]   r=   r=   rO   r>   rt      s    rt   c                       sB   e Zd ZeZ fddZdd Zdef fddZdd	 Z  Z	S )
VerifyPhoneViewc                    sr   t |tj| _| jrtjj| j| _	n|j
jst|S tjj|| _	| j	s,t|S t j|g|R i |S rF   )r   ru   r   rv   rI   r   phone_verificationPhoneVerificationStageProcessrJ   rK   r1   rc   r&   ChangePhoneVerificationProcessrL   r`   r9   rO   r=   r>   r`      s   zVerifyPhoneView.handlec                 C      d| j jiS rT   )rK   rU   r|   r=   r=   r>   rV         z VerifyPhoneView.get_input_kwargsr5   c                    rW   rF   rX   r[   rO   r=   r>   rZ      r\   z$VerifyPhoneView.handle_invalid_inputc                 O   s*   | j   d }| jr| j }t||S rF   )rK   rQ   rI   exitr%   rR   rS   r=   r=   r>   r?      s
   

zVerifyPhoneView.post)
r@   rA   rB   r#   rC   r`   rV   rZ   r?   r]   r=   r=   rO   r>   r      s    r   c                   @   r,   )RequestPasswordResetViewc                 O   sJ   t j| jd| jjd  d}|r|S | j| tjr t	|S t
|S )Nreset_passwordr.   )r_   rv   )r   consume_or_429r0   r5   r7   lowersaverw   PASSWORD_RESET_BY_CODE_ENABLEDr%   r   RequestPasswordResponse)r:   r0   r;   r<   r429r=   r=   r>   r?      s   
zRequestPasswordResetView.postN)r@   rA   rB   r   rC   r?   r=   r=   r=   r>   r      rD   r   reset_password_from_keyc                       sJ   e Zd ZeZdef fddZ fddZdd Zdd	 Zd
d Z	  Z
S )ResetPasswordViewr5   c                    s&   | j rd|jv r| j   t |S )Nrv   )rK   errorsrY   rL   rZ   r[   rO   r=   r>   rZ     s   
z&ResetPasswordView.handle_invalid_inputc                    sD   d | _ tjrtj| j| _ | j st|S t j	|g|R i |S rF   )
rK   rw   r   r    PasswordResetVerificationProcessrJ   r0   r&   rL   r`   r9   rO   r=   r>   r`     s   zResetPasswordView.handlec                 O   s   |j dd}| jr0td|i| jjd}| s#| j  t||dS | j  t	
|| jjS td|i}| s@t||dS t	
||jS )NzX-Password-Reset-Keyr}   rv   )rU   r~   )r   r8   rK   r   rU   r   rY   r+   confirm_coder   PasswordResetKeyResponser1   )r:   r0   r;   r<   rv   r5   r=   r=   r>   r8     s   

zResetPasswordView.getc                 C   s&   i }| j r|| j j| j jd |S )N)rU   r1   )rK   updaterU   r1   )r:   retr=   r=   r>   rV   !  s   z"ResetPasswordView.get_input_kwargsc                 O   sP   | j j}tj|| j jd  | jr| j  | j  nt	|| t
| jS )Npassword)r5   r1   r   r
   r   r7   rK   r   rQ   finalize_password_resetr%   r0   )r:   r0   r;   r<   r1   r=   r=   r>   r?   '  s   

zResetPasswordView.post)r@   rA   rB   r   rC   rZ   r`   r8   rV   r?   r]   r=   r=   rO   r>   r      s    r   change_passwordc                   @       e Zd ZeZdd Zdd ZdS )ChangePasswordViewc                 O   sX   t | jj| jjd  | jjd }|r!t ||j t	|S t ||j t	|S )Nnew_passwordcurrent_password)
r	   r   r0   r1   r5   r7   r8   finalize_password_setfinalize_password_changer%   )r:   r0   r;   r<   is_setr=   r=   r>   r?   6  s   zChangePasswordView.postc                 C   r   Nr1   r0   r1   r|   r=   r=   r>   rV   A  r   z#ChangePasswordView.get_input_kwargsN)r@   rA   rB   r   rC   r?   rV   r=   r=   r=   r>   r   2  s    r   r   c                   @   sR   e Zd ZeeeedZdd Zdd Z	dd Z
dd	 Zd
d Zdd Zdd ZdS )ManageEmailView)rh   PUTDELETEPATCHc                 O   s   |   S rF   )_respond_email_listr9   r=   r=   r>   r8   N  rp   zManageEmailView.getc                 C   s    t | j| jj}t| j|S rF   )r   list_email_addressesr0   r1   r   EmailAddressesResponse)r:   addrsr=   r=   r>   r   Q  s   z#ManageEmailView._respond_email_listc                 O   s   t j|| j |  S rF   )r   r   	add_emailr5   r   r9   r=   r=   r>   r?   U  s   zManageEmailView.postc                 O   "   | j jd }tj|| |  S Nr.   )r5   r7   r   r   delete_emailr   r:   r0   r;   r<   addrr=   r=   r>   rs   Y     zManageEmailView.deletec                 O   r   r   )r5   r7   r   r   mark_as_primaryr   r   r=   r=   r>   patch^  r   zManageEmailView.patchc                 O   s,   | j jd }t||j|jd}tj||dS )Nr.   )r.   )verification_sent)r5   r7   r   r1   r.   r    RequestEmailVerificationResponse)r:   r0   r;   r<   r   sentr=   r=   r>   putc  s
   zManageEmailView.putc                 C   r   r   r   r|   r=   r=   r>   rV   j  r   z ManageEmailView.get_input_kwargsN)r@   rA   rB   r   r    r   r   rC   r8   r   r?   rs   r   r   rV   r=   r=   r=   r>   r   E  s    r   change_phonec                   @   s(   e Zd ZeZdd Zdd Zdd ZdS )ManagePhoneViewc                 O   s>   g }t  | jj}|r||d |d d t| j|S )Nr      r/   verified)rj   	get_phoner0   r1   appendr   PhoneNumbersResponse)r:   r0   r;   r<   phone_numbersphone_verifiedr=   r=   r>   r8   r  s   zManagePhoneView.getc                 O   s:   | j jd }tjj| j| tj| j|ddgt	j
dS )Nr/   Fr   r   )r5   r7   r   r   r   r4   r0   r   r   r   ACCEPTED)r:   r0   r;   r<   r/   r=   r=   r>   r?   {  s   zManagePhoneView.postc                 C   s(   d }t  | jj}|r|d }d|iS )Nr   r/   )rj   r   r0   r1   )r:   r/   r   r=   r=   r>   rV     s
   z ManagePhoneView.get_input_kwargsN)r@   rA   rB   r   rC   r8   r?   rV   r=   r=   r=   r>   r   n  s
    	r   reauthenticatec                   @   r   )ReauthenticateViewc                 O   s   t j| j t| jS rF   )r   reauthenticationreauthenticate_by_passwordr0   r%   r9   r=   r=   r>   r?     s   
zReauthenticateView.postc                 C   r   r   r   r|   r=   r=   r>   rV     r   z#ReauthenticateView.get_input_kwargsN)r@   rA   rB   r   rC   r?   rV   r=   r=   r=   r>   r     s    r   N)Jhttpr   django.utils.decoratorsr   allauth.accountr   rw   allauth.account.adapterr   rj   allauth.account.internalr   allauth.account.internal.flowsr   r   r	   r
   r   allauth.account.stagesr   r   r   allauth.account.utilsr   allauth.corer   allauth.core.exceptionsr   allauth.decoratorsr   allauth.headless.accountr   allauth.headless.account.inputsr   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   allauth.headless.base.responser$   r%   r&   r'   allauth.headless.base.viewsr(   r)   allauth.headless.internalr*   *allauth.headless.internal.restkit.responser+   r-   rE   rb   rg   ro   rt   r   r   r   r   r   r   r   r=   r=   r=   r>   <module>   sJ    H
;$4($