U
    +&jB                     @   sx   d dl mZmZ d dlmZ d dlmZmZ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Zdd	 ZdS )
    )requestjsonify)get_db)generate_tokenget_user_from_tokenbuild_location)error_response)PHONE_LENGTHCODE_LENGTHNICKNAME_MIN_LENGTHNICKNAME_MAX_LENGTHALLOWED_GENDERS)get_config_valueNc                 C   s   | j ddgddd }| j ddgddd }| j d	dgdd
d }| j ddgddd }| j ddgddd }| j ddgd| j ddgddd }d S )Nz/api/auth/send-codePOST)methodsc                  S   sx   t j} | d}|r t|tkr0tdt dS ddlm} ||}|d r^td|d d	S td
|d d	dfS d S )Nphone   请输入正确的   位手机号r   )send_smssuccessTmessager   r   F  )	r   jsongetlenr	   r   	utils.smsr   r   )datar   r   result r   9D:\Project\Python Project\BangBang\backend\routes\auth.py	send_code
   s    
z'register_auth_routes.<locals>.send_codez/api/auth/loginc                  S   s  t j} | d}| d}|r*t|tkr:tdt dS |rJt|tkrZtdt dS tdd d	k}|rd
dl	m
} |||stdS t }| }|d|f | }|s|d||d d d f |j}|d|f | }d}	nd}	t }
tj tjdd }|d|d f |d|d |
|df |  t|}t||d< |  |
||	|d  pt|d dk d}t|S )Nr   coder   r   u	   请输入u   位验证码use_real_smsfalsetruer   )verify_sms_codeu   验证码错误或已过期z:SELECT * FROM users WHERE phone = ? AND deleted_at IS NULLz=INSERT INTO users (phone, nickname, enabled) VALUES (?, ?, 1)   u   用户7SELECT * FROM users WHERE id = ? AND deleted_at IS NULLTF   )days&DELETE FROM sessions WHERE user_id = ?idzBINSERT INTO sessions (user_id, token, expires_at) VALUES (?, ?, ?)z%Y-%m-%d %H:%M:%Slocationnickname   )tokenuseris_new_userZneed_profile)r   r   r   r   r	   r   r
   r   lowerr   r&   r   cursorexecutefetchone	lastrowidr   datetimenow	timedeltastrftimecommitdictr   closer   )r   r   r"   r#   r&   connr4   r1   user_idr2   r0   Z
expires_atr   responser   r   r    login   sN    


z#register_auth_routes.<locals>.loginz/api/auth/logoutc                  S   sl   t jd} | r| ds$tddS | dd }t }| }|d|f |	  |
  tdd	d
S )NAuthorizationBearer 	   未登录      z$DELETE FROM sessions WHERE token = ?Tu   登出成功r   )r   headersr   
startswithr   splitr   r4   r5   r<   r>   r   )auth_headerr0   r?   r4   r   r   r    logoutP   s    
z$register_auth_routes.<locals>.logoutz/api/auth/meGETc                  S   sV   t jd} | r| ds*tddidfS | dd }t|}|sNtddS t|S )	NrC   rD   errorrE   rF   rG   rH   !   登录已过期，请重新登录)r   rI   r   rJ   r   rK   r   r   )rL   r0   r1   r   r   r    get_current_user`   s    
z.register_auth_routes.<locals>.get_current_userz/api/auth/delete-accountc                  S   s   t jd} | r| ds*tddidfS | dd }t|}|sTtddidfS t }| }|	d	|d
 f |	d|d
 f |
  |  tdddS )NrC   rD   rO   rE   rF   rG   rH   rP   z:UPDATE users SET deleted_at = datetime("now") WHERE id = ?r,   r+   Tu   账号注销成功r   )r   rI   r   rJ   r   rK   r   r   r4   r5   r<   r>   )rL   r0   r1   r?   r4   r   r   r    delete_accountn   s    z,register_auth_routes.<locals>.delete_accountz	/api/userPUTz/api/auth/profilec            
      S   s  t jd} | r| ds*tddidfS | dd }t|}|sTtddidfS t j}|rht|t	sxtdd	id
fS |dd
 }|stddid
fS t|tk st|tkrtddt dt did
fS |d}|r|tkrtddid
fS t }| }|d||d||d|d|d|d|d f |  |d|d f | }|  t	|}	t|	|	d< t|	S )NrC   rD   rO   rE   rF   rG   rH   rP   u   请求数据格式错误r   r.    u   昵称不能为空u   昵称长度应在-u   个字符之间genderu   性别值不正确z
            UPDATE users
            SET nickname=?, avatar=?, gender=?, province=?, city=?, district=?, street=?
            WHERE id=?
        Zavatarprovincecitydistrictstreetr,   r(   r-   )r   rI   r   rJ   r   rK   r   r   
isinstancer=   stripr   r   r   r   r   r4   r5   r<   r6   r>   r   )
rL   r0   r1   r   r.   rV   r?   r4   Zupdated_userr   r   r   r    update_profile   sL    
z,register_auth_routes.<locals>.update_profile)route)appr!   rB   rM   rQ   rR   r]   r   r   r    register_auth_routes	   s    

5


r`   )flaskr   r   Zutils.databaser   Z
utils.authr   r   r   Zutils.helpersr   utils.constantsr	   r
   r   r   r   utils.configr   r8   r`   r   r   r   r    <module>   s   