o
    0h                     @   sR   d dl mZ d dlmZ d dlmZ d dlmZ G dd dZG dd deZ	d	S )
    )JWTAuthentication)InvalidToken)AuthenticationFailed)Usersc                   @   s8   e Zd ZdZdd Zedd Zedd Zdd	 Zd
S )CustomUserWrapperz|
    Wrapper supaya object Users lama bisa dipakai di DRF
    dengan property standar (is_authenticated, is_anonymous).
    c                 C   s
   || _ d S N)_user)selfuser r   =/var/www/html/mfile_papteng_new/webapp/api/auth/custom_jwt.py__init__   s   
zCustomUserWrapper.__init__c                 C      dS )NTr   r	   r   r   r   is_authenticated      z"CustomUserWrapper.is_authenticatedc                 C   r   )NFr   r   r   r   r   is_anonymous   r   zCustomUserWrapper.is_anonymousc                 C   s   t | j|S r   )getattrr   )r	   attrr   r   r   __getattr__   s   zCustomUserWrapper.__getattr__N)	__name__
__module____qualname____doc__r   propertyr   r   r   r   r   r   r   r      s    

r   c                   @   s   e Zd ZdZdd ZdS )CustomJWTAuthenticationze
    Custom JWT Authentication pakai tabel Users lama
    bukan django.contrib.auth.models.User.
    c                 C   sR   | d}|stdztjdj |d}W t|S  tjy(   tdddw )Nuser_idzToken tidak mengandung user_idpk_roles)_pkzUser tidak ditemukanuser_not_found)code)getr   r   objectsselect_relatedDoesNotExistr   r   )r	   validated_tokenr   r
   r   r   r   get_user#   s   
z CustomJWTAuthentication.get_userN)r   r   r   r   r&   r   r   r   r   r      s    r   N)
'rest_framework_simplejwt.authenticationr   #rest_framework_simplejwt.exceptionsr   rest_framework.exceptionsr   webapp.models.masterr   r   r   r   r   r   r   <module>   s    