o
    i Ži¯  ã                   @   sj   d dl mZ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 er,ddlmZ G dd	„ d	ƒZd
S )é    )ÚTYPE_CHECKINGÚAnyÚOptionalÚUnion)Úmodels)ÚEmptyManager)Úcached_propertyé   )Úapi_settings)ÚTokenc                   @   sò  e Zd ZdZdZeejƒZeej	ƒZ
d@dd„Zdefd	d
„Zedefdd„ƒZedefdd„ƒZedefdd„ƒZedefdd„ƒZedefdd„ƒZdedefdd„Zdedefdd„Zdefdd„ZdAdd„ZdAdd„Zd eddfd!d"„Zd eddfd#d$„Zedejfd%d&„ƒZedej	fd'd(„ƒZ dBd)e!e de"fd*d+„Z#dBd)e!e de"fd,d-„Z$dBd.ed)e!e defd/d0„Z%dBd1e&e d)e!e defd2d3„Z'd4edefd5d6„Z(edefd7d8„ƒZ)edefd9d:„ƒZ*defd;d<„Z+d=ede!e, fd>d?„Z-dS )CÚ	TokenUseraÒ  
    A dummy user class modeled after django.contrib.auth.models.AnonymousUser.
    Used in conjunction with the `JWTStatelessUserAuthentication` backend to
    implement single sign-on functionality across services which share the same
    secret key.  `JWTStatelessUserAuthentication` will return an instance of this
    class instead of a `User` model instance.  Instances of this class act as
    stateless user objects which are backed by validated tokens.
    TÚtokenr   ÚreturnNc                 C   s
   || _ d S ©N)r   )Úselfr   © r   úiC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\rest_framework_simplejwt/models.pyÚ__init__   ó   
zTokenUser.__init__c                 C   s   d| j › �S )Nz
TokenUser ©Úid©r   r   r   r   Ú__str__!   ó   zTokenUser.__str__c                 C   s   | j tj S r   )r   r
   ZUSER_ID_CLAIMr   r   r   r   r   $   s   zTokenUser.idc                 C   ó   | j S r   r   r   r   r   r   Úpk(   ó   zTokenUser.pkc                 C   ó   | j  dd¡S )NÚusernameÚ ©r   Úgetr   r   r   r   r   ,   ó   zTokenUser.usernamec                 C   r   )NÚis_staffFr    r   r   r   r   r#   0   r"   zTokenUser.is_staffc                 C   r   )NÚis_superuserFr    r   r   r   r   r$   4   r"   zTokenUser.is_superuserÚotherc                 C   s   t |tƒstS | j|jkS r   )Ú
isinstancer   ÚNotImplementedr   ©r   r%   r   r   r   Ú__eq__8   s   
zTokenUser.__eq__c                 C   s   |   |¡ S r   )r)   r(   r   r   r   Ú__ne__=   r   zTokenUser.__ne__c                 C   s
   t | jƒS r   )Úhashr   r   r   r   r   Ú__hash__@   r   zTokenUser.__hash__c                 C   ó   t dƒ‚©Nz%Token users have no DB representation©ÚNotImplementedErrorr   r   r   r   ÚsaveC   ó   zTokenUser.savec                 C   r-   r.   r/   r   r   r   r   ÚdeleteF   r2   zTokenUser.deleteÚraw_passwordc                 C   r-   r.   r/   ©r   r4   r   r   r   Úset_passwordI   r2   zTokenUser.set_passwordc                 C   r-   r.   r/   r5   r   r   r   Úcheck_passwordL   r2   zTokenUser.check_passwordc                 C   r   r   )Ú_groupsr   r   r   r   ÚgroupsO   r   zTokenUser.groupsc                 C   r   r   )Ú_user_permissionsr   r   r   r   Úuser_permissionsS   r   zTokenUser.user_permissionsÚobjc                 C   ó   t ƒ S r   ©Úset©r   r<   r   r   r   Úget_group_permissionsW   ó   zTokenUser.get_group_permissionsc                 C   r=   r   r>   r@   r   r   r   Úget_all_permissionsZ   rB   zTokenUser.get_all_permissionsÚpermc                 C   ó   dS ©NFr   )r   rD   r<   r   r   r   Úhas_perm]   ó   zTokenUser.has_permÚ	perm_listc                 C   rE   rF   r   )r   rI   r<   r   r   r   Ú	has_perms`   rH   zTokenUser.has_permsÚmodulec                 C   rE   rF   r   )r   rK   r   r   r   Úhas_module_permsc   rH   zTokenUser.has_module_permsc                 C   rE   rF   r   r   r   r   r   Úis_anonymousf   ó   zTokenUser.is_anonymousc                 C   rE   )NTr   r   r   r   r   Úis_authenticatedj   rN   zTokenUser.is_authenticatedc                 C   r   r   )r   r   r   r   r   Úget_usernamen   rB   zTokenUser.get_usernameÚattrc                 C   s   | j  |d¡S )zVThis acts as a backup attribute getter for custom claims defined in Token serializers.Nr    )r   rQ   r   r   r   Ú__getattr__q   r"   zTokenUser.__getattr__)r   r   r   N)r   Nr   ).Ú__name__Ú
__module__Ú__qualname__Ú__doc__Z	is_activer   Úauth_modelsÚGroupr8   Z
Permissionr:   r   Ústrr   r   r   r   r   Úboolr#   r$   Úobjectr)   r*   Úintr,   r1   r3   r6   r7   Úpropertyr9   r;   r   r?   rA   rC   rG   ÚlistrJ   rL   rM   rO   rP   r   rR   r   r   r   r   r      sN    




 r   N)Útypingr   r   r   r   Zdjango.contrib.authr   rW   Zdjango.db.models.managerr   Zdjango.utils.functionalr   Úsettingsr
   Útokensr   r   r   r   r   r   Ú<module>   s    