diff --git a/user/security/__init__.py b/common/security/__init__.py similarity index 100% rename from user/security/__init__.py rename to common/security/__init__.py diff --git a/user/security/keys/rsa_private_key.pem b/common/security/keys/rsa_private_key.pem similarity index 100% rename from user/security/keys/rsa_private_key.pem rename to common/security/keys/rsa_private_key.pem diff --git a/user/security/keys/rsa_public_key.pem b/common/security/keys/rsa_public_key.pem similarity index 100% rename from user/security/keys/rsa_public_key.pem rename to common/security/keys/rsa_public_key.pem diff --git a/user/security/rsa.py b/common/security/rsa.py similarity index 100% rename from user/security/rsa.py rename to common/security/rsa.py diff --git a/user/User.py b/user/User.py index fec0793..54c9a1a 100644 --- a/user/User.py +++ b/user/User.py @@ -10,7 +10,7 @@ class User: name str 用户名 pwd str 密码 role str 角色 - group str 群组 + duty str 职责 """ def __init__(self): @@ -19,7 +19,7 @@ class User: self.name = None self.pwd = None self.role = None - self.group = None + self.duty = None class UserManage(User): @@ -27,11 +27,14 @@ class UserManage(User): 用户管理 """ - # 创建用户 def create_user(self): - res = create_user_process(self.email, self.name, self.pwd, self.role, self.group) - if res is not False: - pass + """ + 创建用户 + Returns: + 创建成功 bool 返回True + 创建失败 str 返回异常信息 + """ + return create_user_process(self.email, self.name, self.pwd, self.role, self.duty) # 禁用用户 def disable_user(self): @@ -62,5 +65,4 @@ if __name__ == '__main__': um.name = "王思川" um.pwd = "pVhsypYQ+Lf81gMHKkkU+xrEhB96jNjbH8PZ6smK8NGnWBuJwHEtr5XPZ+A4dPMsYVZldeyjfR7AVCG3deAWT0JR2aAHqG6pD2IMwA0VqMcXBI2c1uesGRoYNW3815CrAqdRwKlZunpqYkxnWnatfU4zuosuv/7TyY+JhOIS6rV50yiE/Nw/k/aXPtX/ShJI/oybmgzMU+GfODy7k3XnTn9I9vLfFYQrg/m8ybZIL7TGtX+HSUJLZ5ttmFq+cnykBVf2iK7Q3lV6f65tmVmIiU+e2xrBc4nMHyYxZksGJNWeVZ2F45QPrif14BML7X9g/QDqze7Jm3ZHg6fs/wV/ISrvw/C1fPFbSCRfjuLcusLY5fcFG3X0r7kST6vIzbr4ZYH3TZZ0p29+dgEEt+fj+d17URrd92xPzuLz2UIRi/pncNSvZb31PDHMY6pEfjigXOx6o4XTtbLqNIRuo8n+LX8XyJvMPc2EUQEMsRKet6KFpVJTnXGhJkI37lHh4Kc4qv0HIdLVjWd05dlo0R2Ggsm1Fb2vGL35l5YumjkFJjQDV5TV0IhzLWW56A56dluHaMDsOQXqFNVCdnpYmzNtm8pEVYfzxnKJwpq5a0xqaLcf7SO/VmLpFKXj+9ZSEEWK5RAzbSVSoQCIWISLYPDqNRnsXFS1CDwe3xv1+86H3nY=" um.role = "admin" - um.group = ["admin"] - um.create_user() + print(um.create_user()) diff --git a/user/process.py b/user/process.py index 1df71eb..f397b81 100644 --- a/user/process.py +++ b/user/process.py @@ -1,35 +1,100 @@ import time +import random from werkzeug.security import generate_password_hash -from common.db import insert_data -from user.scripts import check_mail_fmt, check_pwd_fmt, gen_new_uid -from user.security.rsa import decrypt_data +from common.db import insert_data, find_data +from user.scripts import check_mail_fmt, check_pwd_fmt +from common.security.rsa import decrypt_data -def create_user_process(email, name, pwd, role, group): +def create_user_process(email, name, pwd, role, duty): """ 创建新用户流程 Parameters: - - + email str 邮箱 + name str 姓名 + pwd str 密码 + role str 角色 + duty str 职责 Returns: - 执行成功 True - 执行失败 False + 执行成功 bool True + 执行失败 str 异常信息 """ + def check_params(): + """ + 参数检查 + """ + roles = ['admin', 'member', 'guest'] + if role not in roles: + return "用户角色异常" - if not check_mail_fmt(email): - return False + duties = ['developers', 'analysts', None] + if duty not in duties: + return "成员职责异常" - if not check_pwd_fmt(pwd): - return False + if not check_mail_fmt(email): + return "邮箱格式错误" - user = dict() - user['UID'] = gen_new_uid() - user['email'] = email - user['name'] = name - user['pwd'] = generate_password_hash(decrypt_data(encrypt_msg=pwd)) - user['role'] = role - user['group'] = group - user['create_time'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + if not check_pwd_fmt(pwd): + return "密码格式错误" - insert_data("tfse_admin", "用户", "用户信息", user) + if len(find_data("tfse_admin", "用户", "用户信息", {"email": email})) > 0: + return "邮箱已被注册" + + return True + + def gen_new_uid(): + """ + 生成新的用户ID,如果该ID存在,则重新生成 + Returns: + 生成的用户ID + """ + + def make_id(num): + """ + 随机生成字符串 + """ + choices = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' + salt = '' + for i in range(num): + salt += random.choice(choices) + return salt + + def gen_id(): + """ + 生成新ID, + 检查新ID是否存在,如果存在则继续生成新ID + 若新ID可使用,返回新ID + """ + new_id = make_id(8) + case = find_data("tfse_admin", "用户", "用户信息", {"企业ID": new_id}) is [] + while case: + new_id = make_id(8) + return new_id + + return gen_id() + + def process_main(): + """ + 执行流程 + """ + check_param_result = check_params() + if check_param_result is not True: + return check_param_result + + user = dict() + user['UID'] = gen_new_uid() + user['email'] = email + user['name'] = name + user['pwd'] = generate_password_hash(decrypt_data(encrypt_msg=pwd)) + user['status'] = 'normal' + user['role'] = role + user['duty'] = duty + user['create_time'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + + insert_data("tfse_admin", "用户", "用户信息", user) + + return True + + return process_main() diff --git a/user/scripts.py b/user/scripts.py index ab278c0..c31904e 100644 --- a/user/scripts.py +++ b/user/scripts.py @@ -1,19 +1,18 @@ -import random import re -from common.db import find_data -from user.security.rsa import decrypt_data +from common.security.rsa import decrypt_data def check_mail_fmt(email): """ - 邮箱地址格式校验 + 邮箱地址格式校验,仅允许@fecr.com.cn Parameters: email: 邮箱 Returns: result: 邮箱校验结果,正确返回True,不正确返回False """ - regex = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$" + # regex = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$" + regex = "^.+\\@fecr.com.cn" case = (len(email) > 7) and (re.match(regex, email) is not None) result = True if case else False return result @@ -35,29 +34,3 @@ def check_pwd_fmt(pwd): case = (len(password) >= 8) and (re.match(regex, password) is not None) result = True if case else False return result - - -def gen_new_uid(): - """ - 生成新的用户ID,如果该ID存在,则重新生成 - Returns: - new_id: 生成的用户ID - """ - def make_id(num): - """ - 随机生成字符串 - """ - choices = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' - salt = '' - for i in range(num): - salt += random.choice(choices) - return salt - - # 生成新ID - new_id = make_id(8) - # 检查新ID是否存在,如果存在则继续生成新ID - case = find_data("tfse_admin", "用户", "用户信息", {"企业ID": new_id}) is [] - while case: - new_id = make_id(8) - # 新ID可使用,返回新ID - return new_id diff --git a/user/static/db_design/user.json b/user/static/db_design/user.json deleted file mode 100644 index c1f1a69..0000000 --- a/user/static/db_design/user.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "UID": null, - "email": null, - "pwd": null, - "name": null, - "status": null, - "role": null, - "group": null, - "create_time": null -} \ No newline at end of file