
    hk                        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 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mZ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-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; ddlm<Z<m=Z=  e edd            Z> G d de"      Z? G d de+e	      Z@ G d d e"      ZA G d! d"e;      ZB G d# d$e;      ZC G d% d&e$      ZD G d' d(e#      ZEy))*    )app_settings)get_adapter)complete_signupsend_email_confirmation)ConfirmEmailView)EmailAddress)signals)SocialAccount)settings)method_decorator)gettext_lazy)sensitive_post_parametersstatus)MethodNotAllowedNotFoundValidationError)CreateAPIViewGenericAPIViewListAPIView)AllowAnyIsAuthenticated)Response)APIView)JWTSerializerTokenSerializercreate_token)
TokenModel)SocialAccountSerializerSocialConnectSerializerSocialLoginSerializerVerifyEmailSerializer!ResendEmailVerificationSerializer)
jwt_encode)	LoginView   )RegisterSerializerregister_permission_classes	password1	password2c                   T     e Zd ZeZ e       ZeZdZ	e
 fd       Zd Zd Zd Z xZS )RegisterViewdj_rest_authc                 "    t        |   |i |S N)superdispatch)selfargskwargs	__class__s      b/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/dj_rest_auth/registration/views.pyr1   zRegisterView.dispatch-   s    w000    c                 p   t         j                  t         j                  j                  k(  rdt	        d      iS t        t        dd      r?|| j                  | j                  d}t        || j                               j                  S t        |j                  | j                               j                  S )NdetailzVerification e-mail sent.REST_USE_JWTF)useraccess_tokenrefresh_token)context)allauth_settingsEMAIL_VERIFICATIONEmailVerificationMethod	MANDATORY_getattrr   r<   r=   r   get_serializer_contextdatar   
auth_token)r2   r;   rF   s      r6   get_response_datazRegisterView.get_response_data1   s    .. 88BBCa ;<==8^U3 $ 1 1!%!3!3D
 !t/J/J/LMRRR"4??D<W<W<YZ___r7   c                    | j                  |j                        }|j                  d       | j                  |      }| j	                  |j                        }t        | j                  |      t        j                  |      S )NrF   Traise_exception)r   headers)	get_serializerrF   is_validperform_createget_success_headersr   rH   r   HTTP_201_CREATED)r2   requestr3   r4   
serializerr;   rM   s          r6   createzRegisterView.create@   su    ((gll(;
D1"":.**:??;""4(**
 	
r7   c                 t   |j                  | j                        }t        j                  t        j                  j
                  k7  rAt        t        dd      rt        |      \  | _	        | _
        nt        | j                  ||       t        | j                  j                  |t        j                  d        |S )Nr:   F)saverS   r?   r@   rA   rB   rD   r   r$   r<   r=   r   token_modelr   _request)r2   rT   r;   s      r6   rP   zRegisterView.perform_createL   s    t||,.. 88BBCx78B48H5!4#5T--tZ@LL!!4//	

 r7   )__name__
__module____qualname__r'   serializer_classr(   permission_classesr   rX   throttle_scopesensitive_post_parameters_mr1   rH   rU   rP   __classcell__)r5   s   @r6   r,   r,   '   s>    )46K#N 1 !1`

r7   r,   c                   (    e Zd ZefZdZd Zd Zd Zy)VerifyEmailView)POSTOPTIONSHEADc                     t        |i |S r/   )r"   r2   r3   r4   s      r6   rN   zVerifyEmailView.get_serializera   s    $d5f55r7   c                     t        d      )NGET)r   rh   s      r6   getzVerifyEmailView.getd   s    u%%r7   c                 8   | j                  |j                        }|j                  d       |j                  d   | j                  d<   | j                         }|j                  | j                         t        dt        d      it        j                        S )NrJ   TrK   keyr9   okr   )rN   rF   rO   validated_datar4   
get_objectconfirmrS   r   rC   r   HTTP_200_OK)r2   rS   r3   r4   rT   confirmations         r6   postzVerifyEmailView.postg   s}    ((gll(;
D1'66u=E(T\\*1T7+F4F4FGGr7   N)	rZ   r[   r\   r   r^   allowed_methodsrN   rk   rt    r7   r6   rc   rc   ]   s    "1O6&Hr7   rc   c                       e Zd ZefZeZd Zy)ResendEmailVerificationViewc                 d   | j                  |j                        }|j                  d       t        j                  j
                  d	i |j                  }|st        d      |j                  rt        d      |j                          t        dt        d      it        j                        S )
NrJ   TrK   zAccount does not existzAccount is already verifiedr9   rn   r   rv   )rN   rF   rO   r   objectsrk   ro   r   verifiedsend_confirmationr   rC   r   rr   )r2   rS   r3   r4   rT   emails         r6   rU   z"ResendEmailVerificationView.createt   s    ((gll(;
D1$$((E:+D+DE!":;;>>!"?@@!1T7+F4F4FGGr7   N)rZ   r[   r\   r   r^   r#   r]   rU   rv   r7   r6   rx   rx   p   s    "8Hr7   rx   c                       e Zd ZdZeZd Zy)SocialLoginViewa  
    class used for social authentications
    example usage for facebook with access_token
    -------------
    from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter

    class FacebookLogin(SocialLoginView):
        adapter_class = FacebookOAuth2Adapter
    -------------

    example usage for facebook with code

    -------------
    from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter
    from allauth.socialaccount.providers.oauth2.client import OAuth2Client

    class FacebookLogin(SocialLoginView):
        adapter_class = FacebookOAuth2Adapter
        client_class = OAuth2Client
        callback_url = 'localhost:8000'
    -------------
    c                 v    t        | j                        j                  | j                  | j                         y r/   r   rS   loginr;   r2   s    r6   process_loginzSocialLoginView.process_login   #    DLL!''dii@r7   N)rZ   r[   r\   __doc__r!   r]   r   rv   r7   r6   r   r      s    , -Ar7   r   c                        e Zd ZdZeZefZd Zy)SocialConnectViewa7  
    class used for social account linking

    example usage for facebook with access_token
    -------------
    from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter

    class FacebookConnect(SocialConnectView):
        adapter_class = FacebookOAuth2Adapter
    -------------
    c                 v    t        | j                        j                  | j                  | j                         y r/   r   r   s    r6   r   zSocialConnectView.process_login   r   r7   N)	rZ   r[   r\   r   r    r]   r   r^   r   rv   r7   r6   r   r      s    
 /)+Ar7   r   c                        e Zd ZdZeZefZd Zy)SocialAccountListViewz>
    List SocialAccounts for the currently logged in user
    c                 j    t         j                  j                  | j                  j                        S N)r;   r
   rz   filterrS   r;   r   s    r6   get_querysetz"SocialAccountListView.get_queryset   &    $$++1B1B+CCr7   N)	rZ   r[   r\   r   r   r]   r   r^   r   rv   r7   r6   r   r      s     /)+Dr7   r   c                   &    e Zd ZdZeZefZd Zd Z	y)SocialAccountDisconnectViewz[
    Disconnect SocialAccount from remote service for
    the currently logged in user
    c                 j    t         j                  j                  | j                  j                        S r   r   r   s    r6   r   z(SocialAccountDisconnectView.get_queryset   r   r7   c                    | j                         }|j                  |d         j                         }|st        t	        | j
                        j                  ||       |j                          t        j                  j                  t        | j
                  |       t        | j                  |      j                        S )Npk)r   )senderrS   socialaccount)r   r   firstr   get_social_adapterrS   validate_disconnectdeleter	   social_account_removedsendr
   r   rN   rF   )r2   rS   r3   r4   accountsaccounts         r6   rt   z SocialAccountDisconnectView.post   s    $$&//VD\/288:N4<<(<<WhO&&++ LL! 	, 	
 ++G499::r7   N)
rZ   r[   r\   r   r    r]   r   r^   r   rt   rv   r7   r6   r   r      s#     /)+D;r7   r   N)Fallauth.accountr   r?   allauth.account.adapterr   allauth.account.utilsr   r   allauth.account.viewsr   allauth.account.modelsr   allauth.socialaccountr	   allauth.socialaccount.adapterr   allauth.socialaccount.modelsr
   django.confr   django.utils.decoratorsr   django.utils.translationr   rC   django.views.decorators.debugr   rest_frameworkr   rest_framework.exceptionsr   r   r   rest_framework.genericsr   r   r   rest_framework.permissionsr   r   rest_framework.responser   rest_framework.viewsr   dj_rest_auth.app_settingsr   r   r   dj_rest_auth.modelsr   %dj_rest_auth.registration.serializersr   r    r!   r"   r#   dj_rest_auth.utilsr$   dj_rest_auth.viewsr%   r'   r(   r`   r,   rc   rx   r   r   r   r   rv   r7   r6   <module>r      s    < / J 2 / ) K 6   4 6 C ! Q Q N N @ , (  +  * ( I /k;7 
3= 3lHg/ H&H- H(Ai A:A	 A&DK D;. ;r7   