
    )Jf                      v   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ dd	lmZmZ  G d
 de          Z G d d          Z G d d          Zej        ej        ej        ej        ej        ej        ej        gZ G d d          Zej        ej        gZ G d de          Zd ZddZ dS )    N)UserDict)Association)FetchResponse)SRegResponse)OpenIDStore)valid_email_or_none   )OpenIDNoncer   c                   $    e Zd ZdZd Zd Zd ZdS )JSONSafeSessionz
    openid puts e.g. class OpenIDServiceEndpoint in the session.
    Django 1.6 no longer pickles stuff, so we'll need to do some
    hacking here...
    c                 <    t          j        |            || _        d S N)r   __init__data)selfsessions     o/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/socialaccount/providers/openid/utils.pyr   zJSONSafeSession.__init__   s    $			    c                     t          j        t          j        |                                        d          }t          j        | ||          S Nascii)base64	b64encodepickledumpsdecoder   __setitem__)r   keyvaluer   s       r   r   zJSONSafeSession.__setitem__   s?    U 3 344;;GDD#D#t444r   c                     t          j        | |          }t          j        t	          j        |                    d                              S r   )r   __getitem__r   loadsr   	b64decodeencode)r   r   r   s      r   r!   zJSONSafeSession.__getitem__   s;    #D#..|F,T[[-A-ABBCCCr   N)__name__
__module____qualname____doc__r   r   r!    r   r   r   r      sP           5 5 5D D D D Dr   r   c                       e Zd ZdZdZdZdS )OldAXAttributez#http://openid.net/schema/namePersonz)http://openid.net/schema/namePerson/firstz(http://openid.net/schema/namePerson/lastN)r%   r&   r'   PERSON_NAMEPERSON_FIRST_NAMEPERSON_LAST_NAMEr)   r   r   r+   r+   #   s!        7KCAr   r+   c                       e Zd ZdZdZdZdZdS )AXAttributez!http://axschema.org/contact/emailzhttp://axschema.org/namePersonz$http://axschema.org/namePerson/firstz#http://axschema.org/namePerson/lastN)r%   r&   r'   CONTACT_EMAILr,   r-   r.   r)   r   r   r0   r0   )   s&        7M2K><r   r0   c                       e Zd ZdZdZdS )	SRegFieldemailfullnameN)r%   r&   r'   EMAILNAMEr)   r   r   r3   r3   ;   s        EDDDr   r3   c                   .    e Zd ZdZddZddZd Zd ZdS )DBOpenIDStorei`T  Nc                 (   	 t          j        |j                  }|                                }n)# t          $ r t          j        |j                  }Y nw xY wt          j                            ||j	        ||j
        |j        |j                   d S )N)
server_urlhandlesecretissuedlifetime
assoc_type)r   encodebytesr=   r   AttributeErrorencodestringr   objectscreater<   r>   r?   r@   )r   r;   assocr=   s       r   storeAssociationzDBOpenIDStore.storeAssociationI   s    	%'55F
 ]]__FF	  	7 	7 	7(66FFF	7
 	""!<<^' 	# 	
 	
 	
 	
 	
s   0 #AAc           	         t           j                            |          }|r|                    |          }|                    d           |                                sd S d }|D ]}t          |j        t          j        |j	        
                    d                    |j        |j        |j                  }t          |d          r|                                }n|j        }|dk    r|                                 ||}|S )Nr;   r<   z-issuedzutf-8getExpiresInr   )r   rD   filterorder_byexistsOIDAssociationr<   r   decodebytesr=   r$   r>   r?   r@   hasattrrK   	expiresIndelete)r   r;   r<   stored_assocs
return_valstored_assocrF   
expires_ins           r   getAssociationzDBOpenIDStore.getAssociationZ   s   #+22j2II 	@)000??My)))##%% 	4
) 	' 	'L"#"<#6#=#=g#F#FGG#%' E un-- -"//11

"_
Q##%%%%%!&Jr   c                     t           j                            |          }|r|                    |          }|                                 d S )NrI   rJ   )r   rD   rL   rS   )r   r;   r<   rT   s       r   removeAssociationzDBOpenIDStore.removeAssociation|   sR    #+22j2II 	@)000??Mr   c                     	 t           j                            |||           n8# t           j        $ r& t           j                            |||           Y dS w xY wdS )N)r;   	timestampsaltTF)r
   rD   getDoesNotExistrE   )r   r;   r\   r]   s       r   useNoncezDBOpenIDStore.useNonce   s    	##% $     ' 	 	 	&&% '    44		 us   "% 1AAr   )r%   r&   r'   max_nonce_agerG   rX   rZ   r`   r)   r   r   r9   r9   F   s`        M
 
 
 
"       D      r   r9   c                 N   d }t          j        |           }|r,t          |                    t          j                            }|s^t          j        |           }|rH	 |                    t          j                  }|rt          |d                   }n# t          $ r Y nw xY w|S Nr   )
r   fromSuccessResponser   r^   r3   r6   r   r0   r1   KeyError)responser4   sregaxvaluess        r   get_email_from_responserj      s    E+H55D ?#DHHY_$=$=>> .x88 	 9:: ;/q	::E   Ls   6B 
B"!B"c                    d }|r4t          j        |           }|r|D ]}|                    |          }|r n|sR|rPt          j        |           }|r:|D ]7}	 |                    |          }|r|d         }n# t          $ r Y nw xY w|r n8|S rc   )r   rd   r^   r   re   )rf   
sreg_namesax_namesr   rg   namerh   ri   s           r   get_value_from_responsero      s    E /99 	"   E  X .x88 		   VVD\\F * &q	   D ELs   A88
BB)NN)!r   r   collectionsr   openid.associationr   rO   openid.extensions.axr   openid.extensions.sregr   openid.store.interfacer   OIDStoreallauth.utilsr   modelsr
   r   r+   r0   r1   r,   r-   r.   AXAttributesr3   r6   r7   
SRegFieldsr9   rj   ro   r)   r   r   <module>rz      s                 < < < < < < . . . . . . / / / / / / : : : : : : - - - - - - , , , , , , , ,D D D D Dh D D D(B B B B B B B B= = = = = = = = ! $#        ON
H H H H HH H H HV  "     r   