
    f                         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j0                  ej,                  ej.                  ej0                  gZ G d d      Zej6                  ej8                  gZ G d de      Zd ZddZ y)    N)UserDict)Association)FetchResponse)SRegResponse)OpenIDStore)valid_email_or_none   )OpenIDNoncer   c                   "    e Zd ZdZd Zd Zd Zy)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                  |        || _        y N)r   __init__data)selfsessions     g/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/openid/utils.pyr   zJSONSafeSession.__init__   s    $	    c                     t        j                  t        j                  |            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4;;GD##D#t44r   c                     t        j                  | |      }t        j                  t	        j
                  |j                  d                  S r   )r   __getitem__r   loadsr   	b64decodeencode)r   r   r   s      r   r!   zJSONSafeSession.__getitem__   s7    ##D#.||F,,T[[-ABCCr   N)__name__
__module____qualname____doc__r   r   r!    r   r   r   r      s    5Dr   r   c                       e Zd ZdZdZdZy)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y)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y)	SRegFieldemailfullnameN)r%   r&   r'   EMAILNAMEr)   r   r   r3   r3   ;   s    EDr   r3   c                   ,    e Zd ZdZddZddZd Zd Zy)DBOpenIDStorei`T  Nc                 Z   	 t        j                  |j                        }|j                         }t        j                  j                  ||j                  ||j                  |j                  |j                         y # t        $ r" t        j
                  |j                        }Y xw xY w)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    	%''5F
 ]]_F""!<<<<^^'' 	# 	
  	7((6F	7s   A? ?(B*)B*c           	         t         j                  j                  |      }|r|j                  |      }|j                  d       |j	                         sy d }|D ]  }t        |j                  t        j                  |j                  j                  d            |j                  |j                  |j                        }t        |d      r|j                         }n|j                   }|dk(  r|j#                          ||} |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)000?My)##%
) 	'L"##""<#6#6#=#=g#FG##%%''E un-"//1
"__
Q##%%!&J%	'( r   c                     t         j                  j                  |      }|r|j                  |      }|j                          y )NrI   rJ   )r   rD   rL   rS   )r   r;   r<   rT   s       r   removeAssociationzDBOpenIDStore.removeAssociation|   s=    #++22j2I)000?Mr   c                     	 t         j                  j                  |||       y# t         j                  $ r% t         j                  j	                  |||       Y yw xY w)N)r;   	timestampsaltTF)r
   rD   getDoesNotExistrE   )r   r;   r\   r]   s       r   useNoncezDBOpenIDStore.useNonce   sh    	##% $   '' 	&&% '  		s   "% 5AAr   )r%   r&   r'   max_nonce_agerG   rX   rZ   r`   r)   r   r   r9   r9   F   s    M
" Dr   r9   c                 >   d }t        j                  |       }|r(t        |j                  t        j
                              }|sIt        j                  |       }|r2	 |j                  t        j                        }|rt        |d         }|S |S # t        $ r Y |S w xY wNr   )
r   fromSuccessResponser   r^   r3   r6   r   r0   r1   KeyError)responser4   sregaxvaluess        r   get_email_from_responserj      s    E++H5D#DHHY__$=>..x8 9 9:/q	:E L5L  Ls   /B 	BBc                    d }|r3t        j                  |       }|r|D ]  }|j                  |      }|s n |s>|r<t        j                  |       }|r%|D ]   }	 |j                  |      }|r|d   }|s |S  |S # t        $ r Y w xY wrc   )r   rd   r^   r   re   )rf   
sreg_namesax_namesr   rg   namerh   ri   s           r   get_value_from_responsero      s    E//9" 
 X..x8  VVD\F &q	 L L	   s   A::	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h D(B B= = !!  $$##  OONN
HH HV"r   