o
    "4g1'                     @   s8  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 d dl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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* d dl+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6 G dd de1Z7G dd de1Z8eeddddG dd de1Z9eeddddG dd de1Z:G dd  d e1Z;G d!d" d"e1Z<G d#d$ d$e1Z=eed%dddG d&d' d'e1Z>eed(dddG d)d* d*e2Z?eed+dddG d,d- d-e2Z@eed.dddG d/d0 d0e2ZAd1S )2    )method_decorator)app_settings)get_adapter)flows)password_changepassword_reset)EmailAddress)EmailVerificationStageLoginStageController)send_email_confirmation)	ratelimit)ImmediateHttpResponse)
rate_limit)response)AddEmailInputChangePasswordInputConfirmLoginCodeInputDeleteEmailInput
LoginInputMarkAsPrimaryEmailInputReauthenticateInputRequestLoginCodeInputRequestPasswordResetInputResetPasswordInputResetPasswordKeyInputSelectEmailInputSignupInputVerifyEmailInput)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d  t| jS Nemail)r   login_by_coderequest_login_coderequestinputcleaned_datar   selfr,   argskwargs r3   g/var/www/html/authentication-server/venv/lib/python3.10/site-packages/allauth/headless/account/views.pypost,   s   
zRequestLoginCodeView.postN)__name__
__module____qualname__r   input_classr5   r3   r3   r3   r4   r'   )       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                    sh   t |}| | _| jst|S tjj|| jjdd\| _	| _
| j
s't|S t j|g|R i |S NT)peek)r$   AuthenticationStatusget_pending_stagestager    r   r*   get_pending_loginloginuserpending_loginsuperdispatch)r0   r,   r1   r2   auth_status	__class__r3   r4   rF   6   s   


zConfirmLoginCodeView.dispatchc                 O   s   t j| j| jd  t|S N)r   r*   perform_login_by_coder,   r@   r   r/   r3   r3   r4   r5   B   s   zConfirmLoginCodeView.postc                    s*   t   }| jr| jddnd|d< |S )Ncode )rE   get_input_kwargsrD   get)r0   r2   rH   r3   r4   rN   F   s   
z%ConfirmLoginCodeView.get_input_kwargsc                    s    t j| j| jj t |S rJ   )r   r*   record_invalid_attemptr,   r@   rB   rE   handle_invalid_inputr0   r-   rH   r3   r4   rQ   M   s   z)ConfirmLoginCodeView.handle_invalid_input)
r6   r7   r8   r   r9   rF   r5   rN   rQ   __classcell__r3   r3   rH   r4   r;   3   s    r;   rB   )actionhandle)namec                   @   r&   )	LoginViewc                 O   s6   |j jrt|S | jj}tj||| jj t| j	S rJ   )
rC   is_authenticatedr    r-   r.   r   rB   perform_password_loginr   r,   )r0   r,   r1   r2   credentialsr3   r3   r4   r5   V   s
   
zLoginView.postN)r6   r7   r8   r   r9   r5   r3   r3   r3   r4   rW   R   s    rW   signupc                   @   s    e Zd ZdeiZdZdd ZdS )
SignupViewPOSTFc                 O   sx   |j jrt|S t |st|S | j|\}}|s8ztj	j
||| jd W t|S  ty7   Y t|S w t|S )N)rC   
by_passkey)rC   rX   r    get_account_adapteris_open_for_signupr!   r-   try_saver   r[   complete_signupr^   r   r   )r0   r,   r1   r2   rC   respr3   r3   r4   r5   c   s    zSignupView.postN)r6   r7   r8   r   r9   r^   r5   r3   r3   r3   r4   r\   ^   s    r\   c                   @   s   e Zd Zdd Zdd ZdS )SessionViewc                 O   s   t |S rJ   )r   r/   r3   r3   r4   rO   t      zSessionView.getc                 O   s   t  }|| t|S rJ   )r_   logoutr   )r0   r,   r1   r2   adapterr3   r3   r4   deletew   s   
zSessionView.deleteN)r6   r7   r8   rO   rh   r3   r3   r3   r4   rd   s   s    rd   c                       sL   e Zd ZeZ fddZdef fddZddd	Zd
d Zdd Z	  Z
S )VerifyEmailViewc                    s>   t |tj| _| jstjrt|S t j	|g|R i |S rJ   )
r
   enterr	   keyr@   account_settings"EMAIL_VERIFICATION_BY_CODE_ENABLEDr    rE   rU   r/   rH   r3   r4   rU      s   zVerifyEmailView.handler-   c                    s   |    t |S rJ   )_record_invalid_attemptrE   rQ   rR   rH   r3   r4   rQ      s   z$VerifyEmailView.handle_invalid_inputreturnNc                 C   s<   t jrtjj| jdd\}}|rtj| j| d S d S d S r<   )rl   rm   r   email_verification_by_codeget_pending_verificationr,   rP   )r0   _pending_verificationr3   r3   r4   rn      s   z'VerifyEmailView._record_invalid_attemptc                 O   sT   |j dd}| d|i}| s|   t||dS |jd }tj||| j	dS )Nzx-email-verification-keyrM   rk   r-   )r@   )
headersrO   r9   is_validrn   r%   r.   r   VerifyEmailResponser@   )r0   r,   r1   r2   rk   r-   verificationr3   r3   r4   rO      s   
zVerifyEmailView.getc                 O   s>   | j jd }||}|st|ddS | jr| j  t|S )Nrk   i  )status)r-   r.   confirmr   r@   exitr   )r0   r,   r1   r2   confirmationemail_addressr3   r3   r4   r5      s   

zVerifyEmailView.post)ro   N)r6   r7   r8   r   r9   rU   rQ   rn   rO   r5   rS   r3   r3   rH   r4   ri   }   s    
	ri   c                   @   r&   )RequestPasswordResetViewc                 O   s<   t j| jd| jjd  d}|r|S | j| t|S )Nreset_passwordr)   )rT   rk   )	r   consume_or_429r,   r-   r.   lowersaver   RequestPasswordResponse)r0   r,   r1   r2   r429r3   r3   r4   r5      s   
zRequestPasswordResetView.postN)r6   r7   r8   r   r9   r5   r3   r3   r3   r4   r~      r:   r~   reset_password_from_keyc                   @       e Zd ZeZdd Zdd ZdS )ResetPasswordViewc                 O   s<   |j dd}td|i}| st||dS t||jS )NzX-Password-Reset-KeyrM   rk   rt   )ru   rO   r   rv   r%   r   PasswordResetKeyResponserC   )r0   r,   r1   r2   rk   r-   r3   r3   r4   rO      s
   zResetPasswordView.getc                 O   s4   t j| jj| jjd  t|| jj t| jS )Npassword)	r   r   r   r-   rC   r.   finalize_password_resetr   r,   r/   r3   r3   r4   r5      s
   
zResetPasswordView.postN)r6   r7   r8   r   r9   rO   r5   r3   r3   r3   r4   r      s    r   change_passwordc                   @   r   )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   r,   rC   r-   r.   rO   finalize_password_setfinalize_password_changer   )r0   r,   r1   r2   is_setr3   r3   r4   r5      s   zChangePasswordView.postc                 C      d| j jiS NrC   r,   rC   r0   r3   r3   r4   rN         z#ChangePasswordView.get_input_kwargsN)r6   r7   r8   r   r9   r5   rN   r3   r3   r3   r4   r      s    r   manage_emailc                   @   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)r]   PUTDELETEPATCHc                 O   s   |   S rJ   )_respond_email_listr/   r3   r3   r4   rO      re   zManageEmailView.getc                 C   s    t jj| jjd}t| j|S )N)rC   )r   objectsfilterr,   rC   r   EmailAddressesResponse)r0   addrsr3   r3   r4   r      s   z#ManageEmailView._respond_email_listc                 O   s   t j|| j |  S rJ   )r   r   	add_emailr-   r   r/   r3   r3   r4   r5      s   zManageEmailView.postc                 O   "   | j jd }tj|| |  S r(   )r-   r.   r   r   delete_emailr   r0   r,   r1   r2   addrr3   r3   r4   rh         zManageEmailView.deletec                 O   r   r(   )r-   r.   r   r   mark_as_primaryr   r   r3   r3   r4   patch   r   zManageEmailView.patchc                 O   s,   | j jd }t||j|jd}tj||dS )Nr)   )r)   )verification_sent)r-   r.   r   rC   r)   r    RequestEmailVerificationResponse)r0   r,   r1   r2   r   sentr3   r3   r4   put   s
   zManageEmailView.putc                 C   r   r   r   r   r3   r3   r4   rN     r   z ManageEmailView.get_input_kwargsN)r6   r7   r8   r   r   r   r   r9   rO   r   r5   rh   r   r   rN   r3   r3   r3   r4   r      s    r   reauthenticatec                   @   r   )ReauthenticateViewc                 O   s   t j| j t| jS rJ   )r   reauthenticationreauthenticate_by_passwordr,   r   r/   r3   r3   r4   r5     s   
zReauthenticateView.postc                 C   r   r   r   r   r3   r3   r4   rN     r   z#ReauthenticateView.get_input_kwargsN)r6   r7   r8   r   r9   r5   rN   r3   r3   r3   r4   r     s    r   N)Bdjango.utils.decoratorsr   allauth.accountr   rl   allauth.account.adapterr   r_   allauth.account.internalr   allauth.account.internal.flowsr   r   allauth.account.modelsr   allauth.account.stagesr	   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   allauth.headless.base.responser   r   r    r!   allauth.headless.base.viewsr"   r#   allauth.headless.internalr$   *allauth.headless.internal.restkit.responser%   r'   r;   rW   r\   rd   ri   r~   r   r   r   r   r3   r3   r3   r4   <module>   sD    @

0(