File: //usr/lib/python3/dist-packages/sos/policies/auth/__pycache__/__init__.cpython-310.pyc
o
([Qh,! � @ s| d dl Z zd dlZdZW n ey dZY nw d dlZd dlmZmZmZ d dlm Z dZ
dZe �d�Z
G d d
� d
�ZdS )� NTF)�datetime� timedelta�timezone)�TIMEOUT_DEFAULTz sos-toolsz,urn:ietf:params:oauth:grant-type:device_code�sosc @ sZ e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
d� Zdd
� Z dd� Z
dd� Zddd�ZdS )�DeviceAuthorizationClassz$
Device Authorization Class
c C s* d | _ d | _d | _|| _|| _| �� d S �N)�
_access_token�_access_expires_at�&_DeviceAuthorizationClass__device_code�client_identifier_url�token_endpoint�_use_device_code_grant)�selfr r
� r �</usr/lib/python3/dist-packages/sos/policies/auth/__init__.py�__init__! s z!DeviceAuthorizationClass.__init__c C s$ | � � td| j� �� | �� dS )zv
Start the device auth flow. In the future we will
store the tokens in an in-memory keyring.
z<Please visit the following URL to authenticate this device: N)�_request_device_code�print�_verification_uri_complete�poll_for_auth_completion�r r r r r + s ��z/DeviceAuthorizationClass._use_device_code_grantc
C s� dt � �}ddi}tstd��z3tj| j||td�}|�� |�� }|� d�| _
|� d�| _|� d�| _|� d �| _
|� d
�| _W d
S tjy[ } zt�d|j� d|� ���d
}~ww )zm
Initialize new Device Authorization Grant attempt by
requesting a new device code.
z
client_id=zcontent-typez!application/x-www-form-urlencoded�Rpython3-requests is not installed and is required for obtaining device auth token.)�data�headers�timeout� user_code�verification_uri�interval�device_code�verification_uri_completezNHTTP request failed while attempting to acquire the tokens.Error returned was � N)�DEVICE_AUTH_CLIENT_ID�REQUESTS_LOADED� Exception�requests�postr r �raise_for_status�json�get�
_user_code�_verification_uri� _intervalr r � HTTPError�status_code)r r r �res�response�er r r r 9 s8
������z-DeviceAuthorizationClass._request_device_codec
C s� t t| jd�}ts
td��| jdu rvt�| j� z:t j
| j|td�}|j
}|dkr5t�d� | �|�� � |dvr?t||j��|dkrQ|�� d d
vrQt||j��W n t jjyn } zt�d|� �� W Y d}~nd}~ww | jdu sdS dS )z�
Continuously poll OIDC token endpoint until the user is successfully
authenticated or an error occurs.
)�
grant_type� client_idr r N�r r �� z$The SSO authentication is successful)r5 � r6 �error)�authorization_pending� slow_downz)Error was found while posting a request: )�GRANT_TYPE_DEVICE_CODEr"