
    [<vj#              
       x   d dl mZmZmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZ d dlmZ d dlmZ  e       Zej1                  dej2                  	       ee
      fd
edefd       Zej1                  de       ee
      fd
edededefd       Zej1                  de       ee
      fdededefd       Zej1                  d       ee
      fdededefd       Zej1                  d       ee       ee
      fdedefd       Zej?                  de       ee      fdefd       Z y)    )	APIRouterRequestResponseDependsHTTPExceptionstatus)AsyncSession)get_db)AuthService)RegisterRequestLoginRequestRefreshRequestAuthResponseUserResponse)get_current_user)Userz	/register)status_codedatadbc                    K   t        |      }|j                  | j                  | j                  | j                         d {   }d|j
                  dS 7 w)NzUser created successfully)messageuser_id)r   registeremailpasswordnameid)r   r   serviceusers       /app/api/v1/routes/auth.pyr   r      sG     "oG!!$**dmmTYYGGD2twwGG Hs   A AAAz/login)response_modelrequestresponsec                 *  K   t        |      }|j                  | j                  | j                  |j                  j                  d      |j                  j                         d {   }|j                  d|d   dddd       |d   |d   d	S 7 )w)
N
user-agent
user_agent
ip_addressrefresh_tokenTstrict ' keyvaluehttponlysecuresamesitemax_ageaccess_tokenr3   r)   )	r   loginr   r   headersgetclienthost
set_cookie)r   r"   r#   r   r   results         r    r5   r5      s      "oG==

??&&|4>>&&	 !  F _%   #>2VOE\]]s   A%B'B(*Bz/refreshc                 p  K   | j                   j                  d      }|st        t        j                  d      t        |      }|j                  || j                  j                  d      | j                  j                         d {   }|j                  d|d   dddd	       |d
   |d   dS 7 )w)Nr)   zRefresh token missing)r   detailr%   r&   Tr*   r+   r,   r3   r4   )cookiesr7   r   r   HTTP_401_UNAUTHORIZEDr   refreshr6   r8   r9   r:   )r"   r#   r   r)   r   r;   s         r    r@   r@   *   s      OO''8M(D(DMdee"oG????&&|4>>&& #  F _%   #>2VOE\]]s   BB6
B4*B6z/logoutc                    K   | j                   j                  d      }|r$t        |      }|j                  |       d {    |j	                  d       ddiS 7 w)Nr)   r   z
Logged out)r>   r7   r   logoutdelete_cookie)r"   r#   r   r)   r   s        r    rB   rB   D   sX      OO''8Mb/nn]+++?+|$$ 	,s   =AA Az/logout-allcurrent_userc                 r   K   t        |      }|j                  | j                         d {    ddiS 7 w)Nr   zAll sessions logged out)r   
logout_allr   )rD   r   r   s      r    rF   rF   Q   s:     
 "oG


\__
---011 .s   *75	7z/mec                    K   t        | j                  | j                  | j                  | j                  | j
                  | j                        S w)N)r   r   r   	is_activeis_verifiedis_admin)r   r   r   r   rH   rI   rJ   )rD   s    r    get_merK   Z   sG     ??  (( ,,&& s   AAN)!fastapir   r   r   r   r   r   sqlalchemy.ext.asyncior	   
db.sessionr
   services.auth_servicer   schemas.authr   r   r   r   r   api.depsr   models.userr   routerpostHTTP_201_CREATEDr   r5   r@   rB   rF   r7   rK        r    <module>rX      s   P P /  - b b % 	[f&=&=>=DV_ H Hl H ?H
 Xl3
 v	^
^^ ^ 		^ 4^0 Z5 v^^^ 	^ 6^2 Y v
%
%
% 	
% 
% ] !12v222 2 E,/&-.>&? t  0rW   