U
    @d                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZ d dlT G dd dejjZG d	d
 d
ejjZG dd dejjZG dd dejjZG dd dejjZdS )    N)AES)get_random_bytes)padunpad)abortredirectflash)*c                   @   s    e Zd ZdZejjdd ZdS )	IndexView/c                 C   s   t dS )NZsignin)r   self r   ../cmf/contrib/auth/modules/auth/views/index.pyget   s    zIndexView.getN__name__
__module____qualname____url__cmfviewsactionr   r   r   r   r   r
      s   r
   c                   @   s@   e Zd ZdZejjdd Zejjdd Zejjdd Z	dS )	
SigninViewz/signinc                 C   s,   t jr"ddlm} |d tdS | dS )Nr   )r   u$   Вы уже авторизованыr   zsignin.html)gauthflaskr   r   render)r   r   r   r   r   r      s
    zSigninView.getc              	   C   s   t jd }t jd }tj||}|s.td td}ttdt j	}|j
d| |tj tjdd d	d	d
d |j
dd|tj tjdd d	d	d
d |S )Nloginchallenge_resp  zSigned in successfullyAUTH_SESSION_COOKIE_DOMAINaccess_token   )ZdaysTstrictdomainZexpiresZsecureZhttponlyZsamesitenginx_auth_tokenZpassword123)requestvaluesmodelsCmfAuthZget_by_challenge_respr   make_responsegetattrconfighost
set_cookieZrsa_sign_pack_jwtdatetimeZnowZ	timedelta)r   r   r   r   responsecookie_domainr   r   r   post%   s4    

    zSigninView.postc                 C   s,   t jd }tjj|d}|s$td | S )Nr   r   r    )r(   r)   r*   r+   r   r   Zgen_server_challenge)r   r   r   r   r   r   get_server_challenge?   s
    
zSigninView.get_server_challengeN)
r   r   r   r   r   r   r   r   r4   r6   r   r   r   r   r      s   

r   c                   @   s0   e Zd ZdZejjdd Zejjdd ZdS )
SignupViewz/signupc                 C   s
   |  dS )Nzsignup.htmlr   r   r   r   r   r   K   s    zSignupView.getc                 C   s`   t jd }t jd }t jd }t jd }tj|||}|sDtd ||_|  |j	  dS )Nr   hashsaltphoner    zSigned up successfully)
r(   r)   r*   r+   Znew_from_login_hash_saltr   r;   savedpcommit)r   r   r9   r:   r;   r   r   r   r   r4   O   s    




zSignupView.postN)	r   r   r   r   r   r   r   r   r4   r   r   r   r   r7   H   s
   
r7   c                   @   s    e Zd ZdZejjdd ZdS )SignOutViewz/signoutc              	   C   s~   dt jkrtt jd }n"dt jkr4tt jd }ntd}ttdt j}|jdd|dddd	d
 |jdd|dddd	d
 |S )NZnext_urlZRefererzSigned out successfullyr!   r"   Noner   Tr$   r%   r'   )	r(   r)   r   Zheadersr,   r-   r.   r/   r0   )r   r2   r3   r   r   r   r   d   s2    

          zSignOutView.getNr   r   r   r   r   r?   a   s   r?   c                   @   s@   e Zd ZdZejjdd Zejjdd Zejjdd Z	dS )	ProfileViewz/profilec                 C   s
   |  dS )Nzprofile.htmlr8   r   r   r   r   r   {   s    zProfileView.getc                 C   s   t jtjd }|std tj D ]:\}}t||}|d krL|dkrLq(||krVq(t||| q(|	  |j
  td ttjS )Nidr     u"   Сохранено успешно!)r*   r+   r   r(   Zformr   itemsr-   setattrr<   r=   r>   r   r   path)r   Zcmf_authkvZold_valr   r   r   r4      s    

zProfileView.postc                 C   sZ   t jd }t jd }t jd }tjj|d}|s8td ||| |  |j	  dS )Nr   r9   r:   r5   r    zPassword changed successfully)
r(   r)   r*   r+   r   r   Zset_pass_hashr<   r=   r>   )r   r   r9   r:   r   r   r   r   set_password   s    



zProfileView.set_passwordN)
r   r   r   r   r   r   r   r   r4   rI   r   r   r   r   rA   x   s   

rA   )r1   ZhashlibZsecretstimeZCrypto.Cipherr   ZCrypto.Randomr   ZCrypto.Util.Paddingr   r   r   r   r   r   Zcmf.includer   r   ZBaseViewr
   r   r7   r?   rA   r   r   r   r   <module>   s   .