U
    bŸ}j  ã                   @   sh   d dl Z d dlmZ d dlmZmZ ddlmZ dd„ Zdd	„ Z	d
d„ Z
dd„ Zddd„Zddd„ZdS )é    N©Úwraps)ÚrequestÚjsonifyé   )Úget_dbc                   C   s
   t  d¡S )Né    )ÚsecretsÚtoken_urlsafe© r   r   ú8D:\Project\Python Project\BangBang\backend\utils\auth.pyÚgenerate_token   s    r   c                    s   t ˆ ƒ‡ fdd„ƒ}|S )Nc                     s   t j d¡}|r| d¡s,tdddœƒdfS | d¡d }tƒ }| ¡ }| d	|f¡ | 	¡ }| 
¡  |s|tdd
dœƒdfS t|ƒt _ˆ | |ŽS )NÚAuthorizationzBearer Fu   è¯·å…ˆç™»å½•)ÚsuccessÚerrori‘  ú r   z«
            SELECT a.* FROM admin_users a
            JOIN admin_sessions s ON a.id = s.admin_id
            WHERE s.token = ? AND s.expires_at > datetime('now')
        u!   ç™»å½•å·²è¿‡æœŸï¼Œè¯·é‡æ–°ç™»å½•)r   ÚheadersÚgetÚ
startswithr   Úsplitr   ÚcursorÚexecuteÚfetchoneÚcloseÚdictÚadmin)ÚargsÚkwargsÚauth_headerÚtokenÚconnr   r   ©Úfr   r   Údecorated_function
   s    ü
z*admin_required.<locals>.decorated_functionr   )r"   r#   r   r!   r   Úadmin_required	   s    r$   c                 C   sT   | sd S t ƒ }| ¡ }| d| f¡ | ¡ }| ¡  |s<d S t|ƒ}t|ƒ|d< |S )Nz§
        SELECT u.* FROM users u
        JOIN sessions s ON u.id = s.user_id
        WHERE s.token = ? AND s.expires_at > datetime('now') AND u.deleted_at IS NULL
    Úlocation)r   r   r   r   r   r   Úbuild_location)r   r    r   ÚrowÚuserr   r   r   Úget_user_from_token#   s    ür)   c                 C   sD   | sd S t ƒ }| ¡ }| d| f¡ | ¡ }| ¡  |r@|d S d S )Nz¨
        SELECT u.id FROM users u
        JOIN sessions s ON u.id = s.user_id
        WHERE s.token = ? AND s.expires_at > datetime('now') AND u.deleted_at IS NULL
    Úid)r   r   r   r   r   )r   r    r   r'   r   r   r   Úget_user_id_from_token5   s    ür+   c                 C   sb   t ƒ }| ¡ }zD| r$| d| f¡ n|r8| d|f¡ nW ¢dS | ¡ }|dk	W ¢S | ¡  X dS )ul   
    é€šè¿‡tokenæˆ–user_idæ£€æŸ¥æ˜¯å¦æ˜¯ç®¡ç†å‘˜
    å¦‚æžœæ˜¯ç®¡ç†å‘˜è¿”å›žTrueï¼Œå¦åˆ™è¿”å›žFalse
    z¼
                SELECT a.id FROM admin_users a
                JOIN admin_sessions s ON a.id = s.admin_id
                WHERE s.token = ? AND s.expires_at > datetime('now')
            z[
                SELECT a.id FROM admin_users a
                WHERE a.id = ?
            FN)r   r   r   r   r   )r   Zuser_idr    r   r'   r   r   r   Úget_admin_from_tokenC   s    üýr,   Fc                 C   s’   g }|   d¡rd| | d ¡ |   d¡rd| | d ¡ |   d¡rd| | d ¡ |   d¡rd| | d ¡ |r€|   d¡r€| | d ¡ |rŽd |¡S d S )NZprovinceZcityZdistrictZstreetZdetail_locationú/)r   ÚappendÚjoin)ÚdataZinclude_detailZlocation_partsr   r   r   r&   ^   s    



r&   )NN)F)r	   Ú	functoolsr   Úflaskr   r   Údatabaser   r   r$   r)   r+   r,   r&   r   r   r   r   Ú<module>   s   
