o
    dhb                     @  s@  d dl mZ d dlmZmZmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ edd	Zd
d ZddddddddddddddZejdedd6d7d!d"Zeded#ed#fd8d'd(Zejd)edd6d7d*d+Zed)ed#ed#ed#ed#edededfd9d1d2Zed3d:d4d5ZdS );    )annotations)	APIRouterRequestForm)HTMLResponseRedirectResponse)status)create_client)	templates)supabase_servicez/auth)prefixc                   C  s   t tjtjS N)r	   spsSUPABASE_URLSUPABASE_KEY r   r   '/var/www/html/bot/app/web/pages/auth.py_tmp_client   s   r   zkorea.krzkepco.co.krzkoenergy.krzkomipo.co.krziwest.co.krzkospo.co.krz	ewp.co.krz
khnp.co.krz	kps.co.krzkdn.comzkepco-enc.comz
knfc.co.krz	kpx.or.kr)u	   공무원u   한국전력공사u   한국남동발전u   한국중부발전u   한국서부발전u   한국남부발전u   한국동서발전u   한국수력원자력u	   한전KPSu	   한전KDNu   한국전력기술u   한전원자력연료u   전력거래소z/login)response_classNrequestr   m
str | Nonec                   s   t d| |dS )Nauth/login.html)r   message)r
   TemplateResponser   r   r   r   r   
login_page#   s   r   .emailstrpasswordc              
     s   t  }z$|j||d}|j}|std|j|jd| jd< tdt	j
dW S  tyF } ztjd| d|d	d
dW  Y d }~S d }~ww )N)r   r   u   로그인 실패)idr   user/urlstatus_coder   u1   이메일 또는 비밀번호를 확인하세요.)r   errorr     r%   )r   authsign_in_with_passwordr!   RuntimeErrorr    r   sessionr   r   HTTP_303_SEE_OTHER	Exceptionr
   r   )r   r   r   clientresr!   er   r   r   login_action(   s"   
r2   z/signupc                   s   t d| |tdS )Nauth/signup.html)r   r   allowed_orgs)r
   r   ALLOWED_ORGSr   r   r   r   signup_page<   s   r6   nameorg
departmentoffice_phoneresponsibilityc                   s8  t  }z!|dd   }	|tvrtdt| }
|	|
kr$tdW n2 tyW } z&tjd| t	|r9t	|nd||||p@d|pCd|pFdtd	d	d
W  Y d }~S d }~ww z"||d|||pad|pdd|pgddid}|j
|}tdtjdW S  ty   tjd| d||||pd|pd|pdtd	d	d
 Y S w )N@u.   선택한 기관이 유효하지 않습니다.uF   선택한 기관의 공식 이메일로만 가입할 수 있습니다.r3   u+   가입 정보가 올바르지 않습니다. )	r   r&   r   r7   r8   r9   r:   r;   r4   r'   r(   data)r7   r8   r9   r:   r;   )r   r   optionsz/auth/login?m=signup_okr#   uk   가입 중 오류가 발생했습니다. 이메일을 확인하거나 다른 주소를 사용해 보세요.)r   splitlowerstripr5   
ValueErrorr.   r
   r   r   r)   sign_upr   r   r-   )r   r   r   r7   r8   r9   r:   r;   r/   domainexpected_domainr1   payload_r   r   r   signup_actionH   sr   
rJ   z/logoutc                   s   | j dd  tdtjdS )Nr!   r"   r#   )r,   popr   r   r-   )r   r   r   r   logout   s   rL   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r7   r   r8   r   r9   r   r:   r   r;   r   )r   r   )
__future__r   fastapir   r   r   fastapi.responsesr   r   	starletter   supabaser	   app.web.depsr
   app.servicesr   r   routerr   r5   getr   postr2   r6   rJ   rL   r   r   r   r   <module>   sP    
G