
    :>j                        d Z ddlZddlZddlZddlZddlmZ 	 ddlmZmZ n&# e	$ r  e
d            ej        d           Y nw xY wej                            ej                            e                    Zej                            ed          Zg dZd	ed
efdZd	eded
efdZd Zd ZdefdZded	efdZd2ded	edededef
dZd ZdefdZdedefdZe dk    r e!ej"                  dk     rR e
d            e
d             e
d!            e
d"            e
d#            e
d$            ej        d           ej"        d         Z#e#d%k    r e             dS e#d&k    r e!ej"                  d'k     r e
d(            ej        d           ej"        d         Z$ej"        d)         Z%ej"        d*         Z& e!ej"                  d'k    rej"        d'         ndZ' e!ej"                  d+k    rej"        d+         ndZ( ee$e%e&e'e(           dS e#d,k    r e             dS e#d-k    rG e!ej"                  d)k     r e
d.            ej        d            eej"        d                    dS e#d/k    rS e!ej"                  d*k     r e
d0            ej        d            eej"        d         ej"        d)                    dS  e
d1e#             ej        d           dS dS )3uv  
用户管理工具
- 用户数据存储在 users.xlsx (Excel)
- 密码使用 SHA256 哈希存储
- 支持命令行操作：add / list / delete / reset-pwd

用法：
  python user_manager.py add <username> <password> <display_name> [role]
  python user_manager.py list
  python user_manager.py delete <username>
  python user_manager.py reset-pwd <username> <new_password>
    N)datetime)Workbookload_workbooku+   请先安装 openpyxl: pip install openpyxl   z
users.xlsx)idusernamepassworddisplay_namephonerole
created_atr	   returnc                 |    d}t          j        | |z                                                                             S )u   SHA256 密码哈希zhengfangyuan2026)hashlibsha256encode	hexdigest)r	   salts     %D:\AI-Ad-Agent\portal\user_manager.pyhash_passwordr       s3    D>8d?224455??AAA    hashedc                 (    t          |           |k    S )u   验证密码)r   )r	   r   s     r   verify_passwordr   &   s    ""f,,r   c                  $   t           j                            t                    st	                      } | j        }d|_        |                    t                     |                    t          t          j                              dd         dt          d          dddt          j                                        d          g           |                     t                     t#          d	t                      t#          d
           dS dS )u   初始化 Excel 数据库usersN   adminadmin123u	   管理员 %Y-%m-%d %H:%M:%Su   已创建用户数据库: u'   默认管理员账号: admin / admin123TF)ospathexistsDB_FILEr   activetitleappendCOLUMNSstruuiduuid4r   r   nowstrftimesaveprint)wbwss     r   init_dbr4   +   s    7>>'"" ZZY
		'
		
bqb!*%%LNN##$788
 	 	 	 	47445557888t5r   c                     t           j                            t                    st	                       t          t                    } | j        }g }|                    dd          D ]J}|d         r@t          t          t          |                    }d|vrd|d<   |                    |           K|                                  |S )u   获取所有用户   T)min_rowvalues_onlyr   r   r!   )r#   r$   r%   r&   r4   r   r'   	iter_rowsdictzipr*   r)   close)r2   r3   r   rowus        r   get_all_usersr?   C   s    7>>'"" 				w		B	BE||A4|88  q6 	S#&&''Aa'
LLOOOHHJJJLr   r   c                 L    t                      }|D ]}|d         | k    r|c S dS )u   查找用户r   N)r?   )r   r   r>   s      r   	find_userrA   U   s<    OOE  Z=H$$HHH %4r   c                     t          |           }|rCt          ||d                   r-|d         |d         |                    dd          |d         dS dS )	uA   验证用户登录，成功返回用户信息，失败返回 Noner	   r   r
   r   r!   r   )r   r
   r   r   N)rA   r   get)r   r	   users      r   verify_userrE   ^   sk    XD 
$z*:;; 
Z( 0XXgr**L	
 
 	
 4r   r!   rD   r
   r   r   c                 Z   t          |           rt          d|  d           dS t          j                            t
                    st                       t          t
                    }|j        }|	                    t          t          j                              dd         | t          |          |||t          j                                        d          g           |                    t
                     |                                 t          d|  d| d	|            d
S )u   添加用户   错误: 用户 'u   ' 已存在FNr   r"      用户 'z' (u   ) 添加成功，角色: T)rA   r1   r#   r$   r%   r&   r4   r   r'   r)   r+   r,   r-   r   r   r.   r/   r0   r<   )r   r	   r
   r   r   r2   r3   s          r   add_userrI   k   s    6666777u7>>'"" 				w		B	BIIDJLL"1"h 344    GGGHHJJJ	
OX
O
O,
O
O
O
OPPP4r   c                     t                      } | st          d           dS t          dddddddd	d
ddddd 
           t          d           | D ]O}t          |d         dd|d         dd|                    dd          d
d|d         dd|d          	           Pt          dt          |            d           dS )u   列出所有用户u   暂无用户N
u	   用户名z<16 u   显示名称z<12u	   手机号z<14u   角色z<10u   创建时间zN------------------------------------------------------------------------------r   r
   r   r!   r   r   u   
共 u
    个用户)r?   r1   rC   len)r   r>   s     r   
list_usersrN      s   OOE n	
g{
g
g
g
g
g
gk
g
g
g
g
g
gWe
g
ghhh	(OOO x x:vvvQ~%6vvvQUU72=N=NvvvUVW]U^vvvefgsetvvwwww	
)3u::
)
)
)*****r   c                    | dk    rt          d           dS t          |           st          d|  d           dS t          t                    }|j        }|                    d          D ]5}|d         j        | k    r"|                    |d	         j                    n6|	                    t                     |
                                 t          j                            t          d
|  d          }t          j                            |          r&t          j        |           t          d|            t          d|  d           dS )u   删除用户r   u#   错误: 不能删除管理员账号FrG      ' 不存在r6   r7   r   r   dataz_records.jsonu   已删除用户数据文件: rH   u   ' 已删除T)r1   rA   r   r&   r'   r9   valuedelete_rowsr=   r0   r<   r#   r$   joinBASE_DIRr%   remove)r   r2   r3   r=   records_files        r   delete_userrY      sS   73444uX 6666777u	w		B	B||A|&&  q6<8##NN3q6:&&&E $ GGGHHJJJ 7<<&X2L2L2LMML	w~~l## >
	,<l<<===	
*X
*
*
*+++4r   new_passwordc                    t          |           }|st          d|  d           dS t          t                    }|j        }|                    d          D ]/}|d         j        | k    rt          |          |d         _         n0|                    t                     |	                                 t          d|  d           d	S )
u   重置密码rG   rP   Fr6   rQ   r   rH   u   ' 密码已重置T)
rA   r1   r   r&   r'   r9   rS   r   r0   r<   )r   rZ   rD   r2   r3   r=   s         r   reset_passwordr\      s    XD 6666777u	w		B	B||A|&&  q6<8##(66CFLE $ GGGHHJJJ	
0X
0
0
01114r   __main__r6   u   用法:uI     python user_manager.py init                        # 初始化数据库uR     python user_manager.py add <用户名> <密码> <显示名> [手机号] [角色]uI     python user_manager.py list                        # 列出所有用户uG     python user_manager.py delete <用户名>              # 删除用户uJ     python user_manager.py reset-pwd <用户名> <新密码>  # 重置密码initadd   uX   用法: python user_manager.py add <用户名> <密码> <显示名> [手机号] [角色]         listdeleteu1   用法: python user_manager.py delete <用户名>z	reset-pwdu@   用法: python user_manager.py reset-pwd <用户名> <新密码>u   未知命令: )r!   rD   ))__doc__r   r#   sysr,   r   openpyxlr   r   ImportErrorr1   exitr$   dirnameabspath__file__rV   rU   r&   r*   r+   r   boolr   r4   r?   rA   rE   rI   rN   rY   r\   __name__rM   argvcmdr   r	   r
   r   r    r   r   <module>rs      s     				 



       000000000   	E
7888CHQKKKKK 7??27??84455
',,x
.
.
W
W
WBC BC B B B B-c -3 -4 - - - -
  0  $    
# 
 
 
 
 
 s c  S UX    4+ + +#    :S     & z
s38}}qiYZZZbcccYZZZWXXXZ[[[
(1+C
f}}						3sx==1ElmmmCHQKKK8A;8A;x{"s38}}q00b!c#(mma//sx{{V8\5$?????	
	3sx==1EEFFFCHQKKKCHQK     			3sx==1ETUUUCHQKKKsx{CHQK00000$s$$%%%M s   #  AA