
    9h                        d dl mZmZmZmZmZmZmZ d dlm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ  ede      Zej+                  ddd	g
      d        Zej+                  d      ed               Zej+                  ddd	g
      d        Zy)    )	Blueprintrender_templaterequestredirecturl_forflashcurrent_app)
login_userlogout_userlogin_requiredcurrent_user)
BuildError)db)Userauthz/loginGETPOST)methodsc            	      v	   t         j                  dk(  rbt         j                  j                  dd      j	                         } t         j                  j                  dd      }t
        j                  j                  d|         | s t        dd       t        t        d            S |s t        d	d       t        t        d            S t        j                  j                  t        j                  | k(  t        j                  | k(  z        j!                         }|r|j#                  |      r|j$                  sLt        d
d       t
        j                  j'                  d|j                          t        t        d            S t)        |       t*        j,                  j/                         |_        	 t*        j2                  j5                          t
        j                  j                  d|j                   d|j6                   d|j8                   d       |j@                  r4t
        j                  j                  d       	 t        t        d            S |jD                  r4t
        j                  j                  d       	 t        t        d            S |jF                  r4t
        j                  j                  d       	 t        t        d            S t
        j                  j'                  d!|j                   d|j8                          t        d"d       t        t        d#            S t        d$d       t
        j                  j'                  d%|         t        t        d            S tI        d&      S # t:        $ rd}t*        j2                  j=                          t
        j                  j?                  d|j                   d|        t        dd       Y d}~d}~ww xY w# tB        $ r7}t
        j                  j?                  d|        t        d      cY d}~S d}~ww xY w# tB        $ r7}t
        j                  j?                  d|        t        d      cY d}~S d}~ww xY w# tB        $ r7}t
        j                  j?                  d|        t        d       cY d}~S d}~ww xY w)'u   用户登录r   username_or_email passwordzLogin attempt: u   请输入用户名或邮箱。error
auth.loginu   请输入密码。u0   您的账户已被禁用，请联系管理员。z!Blocked login for inactive user: zUser logged in: z (ID: z, Role: )z%Failed to update last_login for user : u-   登录成功，但登录时间记录失败。warningNz$Redirecting admin to admin dashboardzadmin.dashboardz$Admin dashboard endpoint not found: z/admin/z(Redirecting teacher to teacher dashboardzteacher.dashboardz&Teacher dashboard endpoint not found: z	/teacher/z(Redirecting student to student dashboardzstudent.dashboardz&Student dashboard endpoint not found: z	/student/zUnknown role for user u3   您的账户角色未识别，请联系管理员。
main.indexu   用户名或密码错误。zFailed login attempt for: zauth/login.html)%r   methodformgetstripr	   loggerinfor   r   r   r   queryfilterusernameemailfirstcheck_password	is_activer   r
   r   funcnow
last_loginsessioncommitidrole	Exceptionrollbackr   is_adminr   
is_teacher
is_studentr   )r   r   useres        /var/www/html/app/routes/auth.pyloginr;      s    ~~#LL,,-@"EKKM<<##J3 	/2C1D EF 2G<GL122&0GL122 zz  ]]//DJJBS4ST

%' 	
 D''1>>H'R""**-Nt}}o+^_ 566 t ggkkmDOR

!!#""''&t}}oVDGG9HTYYKWXY }}""''(NO/#G,=$>??
 ""''(RS1#G,?$@AA
 ""''(RS1#G,?$@AA ""**-CDMM?RTUYU^U^T_+`aKWU 566 /9&&)CDUCV'WXGL122 ,--U  R

##%""((+PQUQ^Q^P__abcad)efEyQQR " /&&,,/STUSV-WX#I../ " 1&&,,/UVWUX-YZ#K001 " 1&&,,/UVWUX-YZ#K001st   7A%N O2 P5 Q8 	O/AO**O/2	P2;,P-'P2-P25	Q5>,Q0*Q50Q58	R8,R3-R83R8z/logoutc                      t         j                  } t                t        j                  j                  d|         t        dd       t        t        d            S )u   用户登出zUser logged out: u   您已成功退出登录。r$   r   )	r   r'   r   r	   r#   r$   r   r   r   r'   s    r:   logoutr>   ]   sK     $$HM/z:;	
'0GL)**    z	/registerc                     t         j                  dk(  rbt         j                  j                  dd      j	                         } t         j                  j                  dd      j	                         j                         }t         j                  j                  dd      }t         j                  j                  dd      }| r|r|s t        dd       t        t        d	            S ||k7  r t        d
d       t        t        d	            S t        |      dk  r t        dd       t        t        d	            S t        j                  j                  |       j                         r t        dd       t        t        d	            S t        j                  j                  |      j                         r t        dd       t        t        d	            S t        | |d      }|j                  |       t        j                   j#                  |       	 t        j                   j%                          t&        j(                  j+                  d|  d| d       t        dd       t        t        d            S t3        d      S # t,        $ rm}t        j                   j/                          t&        j(                  j1                  d|  d|        t        dd       t        t        d	            cY d}~S d}~ww xY w)u$   用户注册（示例，可扩展）r   r'   r   r(   r   confirm_passwordu   请填写所有字段。r   zauth.registeru!   两次输入的密码不一致。   u   密码至少需要6位。r=   u   用户名已存在。)r(   u   邮箱已被注册。student)r'   r(   r2   zNew user registered: z (r   u   注册成功，请登录。successr   zFailed to register user r   u!   注册失败，请稍后重试。Nzauth/register.html)r   r   r    r!   r"   lowerr   r   r   lenr   r%   	filter_byr)   set_passwordr   r/   addr0   r	   r#   r$   r3   r4   r   r   )r'   r(   r   rA   r8   r9   s         r:   registerrJ   i   s\    ~~<<##J399;  "-335;;=<<##J3"<<++,>C uH,g6GO455''5w?GO455x=1-w7GO455::288:)73GO455::e,224)73GO455 

 	(#


t		6JJ##&;H:Rwa$PQ/;GL122 /00  	6JJ!$$'?zA3%OP5w?GO455		6s    A#J 	K8A"K3-K83K8N)flaskr   r   r   r   r   r   r	   flask_loginr
   r   r   r   werkzeug.routingr   app.extensionsr   app.models.userr   __name__auth_bprouter;   r>   rJ    r?   r:   <module>rT      s    \ \ \ M M '   
FH
% 	x%1N. 2N.b 	y+  + 	{UFO411 511r?   