U
    Æ½„bº  ã                   @   sR   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 G dd„ dƒZd	S )
é    )Úmodels)ÚEmptyManager)Úcached_propertyé   )ÚCallableFalseÚCallableTrue)Úapi_settingsc                   @   s  e Zd ZdZdZeejƒZeej	ƒZ
dd„ Zdd„ Zedd„ ƒZed	d
„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zedd „ ƒZed!d"„ ƒZd6d$d%„Zd7d&d'„Zd8d(d)„Zd9d*d+„Z d,d-„ Z!ed.d/„ ƒZ"ed0d1„ ƒZ#d2d3„ Z$d4d5„ Z%d#S ):Ú	TokenUseraÊ  
    A dummy user class modeled after django.contrib.auth.models.AnonymousUser.
    Used in conjunction with the `JWTTokenUserAuthentication` backend to
    implement single sign-on functionality across services which share the same
    secret key.  `JWTTokenUserAuthentication` 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.
    Tc                 C   s
   || _ d S ©N)Útoken)Úselfr   © r   úC/tmp/pip-unpacked-wheel-cvqxdfy5/rest_framework_simplejwt/models.pyÚ__init__   s    zTokenUser.__init__c                 C   s   d| j › �S )Nz
TokenUser ©Úid©r   r   r   r   Ú__str__   s    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   s   | j S r
   r   r   r   r   r   Úpk$   s    zTokenUser.pkc                 C   s   | j  dd¡S )NÚusernameÚ ©r   Úgetr   r   r   r   r   (   s    zTokenUser.usernamec                 C   s   | j  dd¡S )NÚis_staffFr   r   r   r   r   r   ,   s    zTokenUser.is_staffc                 C   s   | j  dd¡S )NÚis_superuserFr   r   r   r   r   r   0   s    zTokenUser.is_superuserc                 C   s   | j |j kS r
   r   ©r   Úotherr   r   r   Ú__eq__4   s    zTokenUser.__eq__c                 C   s   |   |¡ S r
   )r   r   r   r   r   Ú__ne__7   s    zTokenUser.__ne__c                 C   s
   t | jƒS r
   )Úhashr   r   r   r   r   Ú__hash__:   s    zTokenUser.__hash__c                 C   s   t dƒ‚d S ©Nz%Token users have no DB representation©ÚNotImplementedErrorr   r   r   r   Úsave=   s    zTokenUser.savec                 C   s   t dƒ‚d S r!   r"   r   r   r   r   Údelete@   s    zTokenUser.deletec                 C   s   t dƒ‚d S r!   r"   ©r   Zraw_passwordr   r   r   Úset_passwordC   s    zTokenUser.set_passwordc                 C   s   t dƒ‚d S r!   r"   r&   r   r   r   Úcheck_passwordF   s    zTokenUser.check_passwordc                 C   s   | j S r
   )Ú_groupsr   r   r   r   ÚgroupsI   s    zTokenUser.groupsc                 C   s   | j S r
   )Ú_user_permissionsr   r   r   r   Úuser_permissionsM   s    zTokenUser.user_permissionsNc                 C   s   t ƒ S r
   ©Úset©r   Úobjr   r   r   Úget_group_permissionsQ   s    zTokenUser.get_group_permissionsc                 C   s   t ƒ S r
   r-   r/   r   r   r   Úget_all_permissionsT   s    zTokenUser.get_all_permissionsc                 C   s   dS ©NFr   )r   Úpermr0   r   r   r   Úhas_permW   s    zTokenUser.has_permc                 C   s   dS r3   r   )r   Z	perm_listr0   r   r   r   Ú	has_permsZ   s    zTokenUser.has_permsc                 C   s   dS r3   r   )r   Úmoduler   r   r   Úhas_module_perms]   s    zTokenUser.has_module_permsc                 C   s   t S r
   )r   r   r   r   r   Úis_anonymous`   s    zTokenUser.is_anonymousc                 C   s   t S r
   )r   r   r   r   r   Úis_authenticatedd   s    zTokenUser.is_authenticatedc                 C   s   | j S r
   )r   r   r   r   r   Úget_usernameh   s    zTokenUser.get_usernamec                 C   s   | j  |d¡S )zVThis acts as a backup attribute getter for custom claims defined in Token serializers.Nr   )r   Úattrr   r   r   Ú__getattr__k   s    zTokenUser.__getattr__)N)N)N)N)&Ú__name__Ú
__module__Ú__qualname__Ú__doc__Z	is_activer   Úauth_modelsÚGroupr)   Z
Permissionr+   r   r   r   r   r   r   r   r   r   r   r    r$   r%   r'   r(   Úpropertyr*   r,   r1   r2   r5   r6   r8   r9   r:   r;   r=   r   r   r   r   r	   	   sL   














r	   N)Zdjango.contrib.authr   rB   Zdjango.db.models.managerr   Zdjango.utils.functionalr   Úcompatr   r   Úsettingsr   r	   r   r   r   r   Ú<module>   s
   