Ë
    �#ijr
  ã                   ó”   — d dl Z d dlZd dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ dZdZd	Z G d
„ de«      Zd„ Zd„ Zd„ Zdd„Zy)é    N)Ú	HTTPErrorÚURLError)Ú	urlencode)ÚRequestÚurlopen)Úsettings)ÚImproperlyConfiguredz,https://accounts.google.com/o/oauth2/v2/authz#https://oauth2.googleapis.com/tokenz0https://openidconnect.googleapis.com/v1/userinfoc                   ó   — e Zd ZdZy)ÚGoogleOAuthErrorz4Raised when Google OAuth cannot be completed safely.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    ú)/var/www/html/office/core/google_oauth.pyr   r      s   „ Ú>r   r   c                  ól   — t        t        dd«      } t        t        dd«      }| r|st        d«      ‚| |fS )NÚGOOGLE_OAUTH_CLIENT_IDÚ ÚGOOGLE_OAUTH_CLIENT_SECRETz:Set GOOGLE_OAUTH_CLIENT_ID and GOOGLE_OAUTH_CLIENT_SECRET.)Úgetattrr   r	   )Ú	client_idÚclient_secrets     r   Ú_credentialsr      sB   € ÜœÐ":¸BÓ?€IÜœHÐ&BÀBÓG€MÙ™MÜ"ØHó
ð 	
ð �mÐ#Ð#r   c           	      óž   — t        «       \  }}t        j                  d«      }|| j                  d<   t	        ||dd|ddœ«      }t
        › d|› �S )Né    Úgoogle_oauth_stateÚcodezopenid email profileÚselect_account)r   Úredirect_uriÚresponse_typeÚscopeÚstateÚpromptú?)r   ÚsecretsÚtoken_urlsafeÚsessionr   ÚAUTHORIZE_URL)ÚrequestÚcallback_urlr   Ú_r#   Úquerys         r   Úauthorization_urlr.      s`   € Ü“>�L€IˆqÜ×!Ñ! "Ó%€EØ,1€G‡O�OÐ(Ñ)ÜØØ$ØØ'ØØ"ñó €Eô ˆ_˜A˜e˜WÐ%Ð%r   c                 ó>  — t        «       \  }}t        t        t        | |||ddœ«      j	                  «       ¬«      }|j                  d«      }|st        d«      ‚t        t        dd|› �i¬«      }|j                  d	«      r|j                  d
«      st        d«      ‚|S )NÚauthorization_code)r   r   r   r    Ú
grant_type)ÚdataÚaccess_tokenz&Google did not return an access token.ÚAuthorizationzBearer )ÚheadersÚemailÚemail_verifiedz/Google did not return a verified email address.)r   Ú_request_jsonÚ	TOKEN_URLr   ÚencodeÚgetr   ÚUSERINFO_URL)r   r+   r   r   Ú
token_datar3   Úprofiles          r   Úfetch_profiler?   -   s¦   € Ü+›~Ñ€Iˆ}ÜÜÜØØ"Ø*Ø(Ø.ñ
ó ÷ ‰6‹8ô	€Jð —>‘> .Ó1€LÙÜÐGÓHÐHäÜØ  G¨L¨>Ð":Ð;ô€Gð �;‰;�wÔ w§{¡{Ð3CÔ'DÜÐPÓQÐQØ€Nr   c                 óp  — t        | ||xs i |rdnd¬«      }|r|j                  dd«       	 t        |d¬«      5 }t        j                  |j                  «       j                  «       «      cd d d «       S # 1 sw Y   y xY w# t        t        t        t        j                  f$ r}t        d«      |‚d }~ww xY w)	NÚPOSTÚGET)r2   r5   ÚmethodzContent-Typez!application/x-www-form-urlencodedé
   )Útimeoutz1Google authentication is temporarily unavailable.)r   Ú
add_headerr   ÚjsonÚloadsÚreadÚdecoder   r   ÚTimeoutErrorÚJSONDecodeErrorr   )Úurlr2   r5   r*   ÚresponseÚexcs         r   r8   r8   F   s    € Ü�c ¨gªm¸ÉdÁFÐX]Ô^€GÙØ×Ñ˜>Ð+NÔOð]Ü�W bÔ)ð 	8¨XÜ—:‘:˜hŸm™m›o×4Ñ4Ó6Ó7÷	8÷ 	8ò 	8ûä”x¤¬t×/CÑ/CÐDò ]ÜÐRÓSÐY\Ð\ûð]ús4   ­B º1A5Á+	B Á5A>Á:B Á>B Â#B5Â$B0Â0B5)NN)rG   r&   Úurllib.errorr   r   Úurllib.parser   Úurllib.requestr   r   Údjango.confr   Údjango.core.exceptionsr	   r)   r9   r<   Ú	Exceptionr   r   r.   r?   r8   r   r   r   ú<module>rV      sL   ðÛ Û ß ,Ý "ß +å  Ý 7ð ?€Ø1€	ØA€ô?�yô ?ò$ò&òô2]r   