U
    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   ?D:\Project\agus\mfile_papteng_new\webapp\api\auth\custom_jwt.py__init__   s    zCustomUserWrapper.__init__c                 C   s   dS )NTr   r	   r   r   r   is_authenticated   s    z"CustomUserWrapper.is_authenticatedc                 C   s   dS )NFr   r   r   r   r   is_anonymous   s    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   sZ   | d}|stdztjdj |d}W n" tjk
rP   tdddY nX t|S )Nuser_idzToken tidak mengandung user_idpk_roles)_pkzUser tidak ditemukanZuser_not_found)code)getr   r   objectsselect_relatedDoesNotExistr   r   )r	   Z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)
Z'rest_framework_simplejwt.authenticationr   Z#rest_framework_simplejwt.exceptionsr   Zrest_framework.exceptionsr   webapp.models.masterr   r   r   r   r   r   r   <module>   s
   