权限管理系统
程序代码
1.main
''' 程序入口 ''' import os,sys #建立一个目录 basedir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #把目录追加到我的路径里 sys.path.append(basedir) #导入我的主程序 from zy3.src import service if __name__ == '__main__': #运行我的service主程序 service.execute()
2.setting
""" 配置文件,数据库的一些配置信息 """ #当前登陆用户的权限列表 user_permission_list = [] #当前登陆用户的基本信息 user_info = {} #数据库的配置信息 pyMysql_Connect_Dict = { "host":'127.0.0.1', "port":3306, "user":'root', "passwd":'自己建', "db":'自己建', "charset":'utf8' }
3.type_permission
""" 查看用户权限、为某个角色分配权限 """ from 自己建.src.repository.permission import Permission from 自己建.src.repository.user_info import UserInfoRepository from 自己建.src.repository.user_type import UserTypeRepository from 自己建.src.repository.user_type_to_permission import UserTypePermission user= UserInfoRepository() #操作用户信息的表的类 user_type = UserTypeRepository() #操作角色表的类 permission = Permission() #操作权限表的类 type_permission = UserTypePermission() #操作权限和角色对应关系的类 def look_type(): look= input("请输入你查看的用户:") username =user.fetch_by_user(look) if username: print("该用户 %s 存在"%username) permissions=type_permission.get_permission(username['user_type_id']) for i in permissions: print(i["caption"]) else: print("没有该用户") def add_per(): #从permission表中获取所有权限列表 types=permission.fetch_all() #从user_type表中获取所有角色列表 pers=user_type.all_caption() print("{:>8}目前可以管理的角色信息如下".format("")) for i in types: print(i["nid"],i["caption"]) type_id=input("请输入添加权限角色的id") # 在打印的时候在前面 print("{:>8}目前可以管理的角色信息如下".format("")) for i in pers: print(i["nid"],i["caption"]) per_id = input("请输入需要分配权限的id:") type_permission.add(user_type_id=type_id, permission_id=per_id) print("{:>8}权限分配成功".format(''))
4.user
""" 添加/删除用户 """ from 自己建.src.repository.user_info import UserInfoRepository from 自己建.src.repository.user_type import UserTypeRepository from 自己建.src.utils.MD5 import pwd_md5 from 自己建.src.repository import user_info ''' 实现向user_info表中添加和删除用户 ''' def add_user(): obj_user = UserInfoRepository() obj_type = UserTypeRepository() types = obj_type.all_caption() while True: print('{:>8}请输入以下信息创建用户'.format('')) name = input('请输入用户名:') password = input('请输入密码:') pwd = pwd_md5(password) print('{:>8}角色列表如下:'.format('')) for i in types: print(i['nid'], i['caption']) typeid = input('请选择角色id:') username = obj_user.exist(name) if username: print('\033[36;1m该用户已存在\033[0m') continue else: obj_user.add(username=name, passwd=pwd, user_type_id=typeid) print('{:>8}成功创建用户'.format('')) break def del_user(): obj = UserInfoRepository() name = input('请输入需要删除的用户名:') obj.dele(name) print('{:>8}成功删除用户'.format(''))
5.user_type
""" 添加/删除角色 """ from 自己建.src.repository.user_type import UserTypeRepository type = UserTypeRepository() def add_type(): caption = input('请输入你要创建的角色:') type.add(caption) print('角色创建成功') def del_type(): caption = input('请输入你要删除的角色:') type.del_data(caption) print('删除成功!')
6.permission
""" 操作权限表的类 导入路连接数据库和关闭数据库的操作 """ from 自己建.src.utils.db_connection import DbConnect try: class Permission: # 初始化对象 def __init__(self): self.db_conn=DbConnect() def add(self,**kwargs): conn =self.db_conn.connect() #连接数据库 sql="""insert into permission(%s) VALUES (%s)"""#在mysql表里插入字段名和数据 key_list=[] #建立一个列表存放key value_list=[]#建立一个列表存放value for k in kwargs:#for循环遍历kwargs key_list.append(k)#把key存放在key_list中 value_list.append("%%(%s)s"%k)#把value存放在value_list中 sql=sql%(",".join(key_list),",".join(value_list)) #通过分隔符去分别插入到两创建的行列表中 conn.execute(sql, kwargs)# 提交数据运行语句 self.db_conn.close()#关闭连接 def fetch_all(self): conn = self.db_conn.connect() #与数据库建立连接 sql="""select * from permission""" #在MySQL的pemission中查询所有角色权限信息 conn.execute(sql) #提交数据运行语句 result=conn.fetchall() #获取所有角色的权限 self.db_conn.close() #关闭连接 return result #返回获取的所有数据 except Exception as e: print(e)
7.user_info
from 自己建.src.utils.db_connection import DbConnect class UserInfoRepository: def __init__(self): self.db_conn = DbConnect() def add(self, **kwargs): ''' 新增用户 :param kwargs: :return: ''' cursor = self.db_conn.connect() sql = """ insert into user_info(%s) values(%s)""" key_list = [] value_list = [] for k, v in kwargs.items(): key_list.append(k) value_list.append('%%(%s)s' % k) sql = sql % (','.join(key_list), ','.join(value_list)) cursor.execute(sql, kwargs) self.db_conn.close() def dele(self, name): ''' 根据用户名删除用户 :param name: :return: ''' cursor = self.db_conn.connect() sql = "delete from user_info WHERE username=%s" cursor.execute(sql, name) self.db_conn.close() def fetch_by_user_pwd(self, username, password): """ 根据用户名密码获取账户信息、角色类型 :param username: :param password: :return: """ cursor = self.db_conn.connect() sql = """ select user_info.nid as nid, user_info.username as username, user_info. user_type_id as user_type_id, user_type.caption as user_type_caption from user_info left join user_type on user_info.user_type_id=user_type.nid where user_info.username=%s and user_info.passwd=%s """ cursor.execute(sql, [username, password, ]) result = cursor.fetchone() self.db_conn.close() return result def fetch_by_user(self, username): """ 仅根据用户名获取账户信息、角色类型 :param username: :param password: :return: """ cursor = self.db_conn.connect() sql = """ select user_info.nid as nid, user_info.username as username, user_info. user_type_id as user_type_id, user_type.caption as user_type_caption from user_info left join user_type on user_info.user_type_id=user_type.nid where user_info.username=%s """ cursor.execute(sql, username) result = cursor.fetchone() self.db_conn.close() return result def exist(self, username): global users ''' 根据用户名判断用户是否存在 :param username: :return: ''' sql = "select 1 from user_info where username=%s" cursor = self.db_conn.connect() cursor.execute(sql, [username,]) result = cursor.fetchone() self.db_conn.close() return result def Change_password(self,password,username): sql = """ UPDATE user_info set passwd="%s" where username="%s" """%(password,username) cursor = self.db_conn.connect() a=cursor.execute(sql) result = cursor.fetchone() self.db_conn.close() return result
8.user_type
from 自己建.src.utils.db_connection import DbConnect try: class UserTypeRepository: def __init__(self): #创建连接,建立游标 self.db_conn = DbConnect() #添加角色 def add(self,caption): #建立连接,游标 conn = self.db_conn.connect() #创建插入表结构 sql = """insert into user_type (caption) VALUE (%s)""" #执行插入操作 conn.execute(sql, [caption,]) #关闭连接 self.db_conn.close() #删除角色 def del_data(self,caption): #建立游标和连接 conn = self.db_conn.connect() #删除语句 sql = """delete from user_type where caption=%s""" #执行删除语句 conn.execute(sql, [caption,]) #关闭连接 self.db_conn.close() def all_caption(self): conn = self.db_conn.connect() sql = """select * from user_type """ conn.execute(sql) data = conn.fetchall() self.db_conn.close() return data except Exception as e: print(e)
9.user_type_to_permission
from 自己建.src.utils.db_connection import DbConnect try: class UserTypePermission: def __init__(self): #建立数据库,游标 self.db_conn = DbConnect() def add(self,**kwargs): #连接数据库,游标 cursor = self.db_conn.connect() sql = """ insert into user_type_to_permission(%s) values(%s)""" #key列表存放插入user_type_id_permission的字节 key_list = [] #value列表存放插入user_type_id_permission的字节的值 value_list = [] for k in kwargs: key_list.append(k) value_list.append('%%(%s)s' % k) sql = sql % (','.join(key_list), ','.join(value_list)) cursor.execute(sql, kwargs) self.db_conn.close() #根据用户角色的id获取所有权限 def get_permission(self, user_type_id): #建立连接,游标 cursor = self.db_conn.connect() #查询权限表的所有数据和外连接权限和角色对应关系表用户角色ID sql = """select * from user_type_to_permission left join permission on user_type_to_permission.permission_id = permission.nid where user_type_to_permission.user_type_id = %s """ #执行mysql语句和用户角色Id cursor.execute(sql,user_type_id) #获取所有的数据 result = cursor.fetchall() #关闭连接 self.db_conn.close() #返回我获取的数据 return result except Exception as e: print(e)
10.db_connection
''' 连接和关闭数据库 ''' import pymysql from 自己建.config import settings class DbConnect: def __init__(self): #导入我的数据库配置信息 self.__conn_dict = settings.pyMysql_Connect_Dict self.conn = None self.cursor = None #建立连接数据库以及当前游标 def connect(self,cursor=pymysql.cursors.DictCursor): self.conn = pymysql.connect(**self.__conn_dict) self.cursor = self.conn.cursor(cursor=cursor) return self.cursor #关闭连接 def close(self): #提交事务 self.conn.commit() #关闭游标 self.cursor.close() #关闭连接 self.conn.close()
11.MD5#加密
import hashlib def pwd_md5(pwd): obj = hashlib.md5() obj.update(pwd.encode('utf-8')) pwd_MD5 = obj.hexdigest() return pwd_MD5
12.service
""" from 自己建.src.auth import user from 自己建.src.repository.user_info import UserInfoRepository from 自己建.src.repository.user_type_to_permission import UserTypePermission from 自己建.src.repository.user_type import UserTypeRepository from 自己建.config import settings from 自己建.src.utils.MD5 import pwd_md5 import importlib user_info = UserInfoRepository() type = UserTypeRepository() type_permission = UserTypePermission() def login(): while True: username = input('请输入用户名:') password = input('请输入密码:') pwd = pwd_md5(password) userinfo = user_info.fetch_by_user_pwd(username,pwd) if not userinfo: print('\033[34;1m用户名或密码输入错误,请重新输入!\033[0m') continue permission_list = type_permission.get_permission(userinfo['user_type_id']) settings.user_permission_list = permission_list settings.user_info = user_info return True def register(): user.add_user() def change_pwd(): while True: user_name = input('你要修改哪个用户的密码:') name = user_name user_name = user_info.exist(user_name) if not user_name: print('\033[36;1m没有该用户\033[0m') continue else: password = input('请输入密码:') pwd = pwd_md5(password) # print(user_name) user_info.Change_password(pwd,name) print('修改成功') break def all_information(): while True: print('请选择你要进行的权限:') for i, item in enumerate(settings.user_permission_list, 1): print('\t',i, item['caption']) msg = int(input('请输入您选择的权限序号:')) permission = settings.user_permission_list[msg-1] modules = permission['module'] func_name = permission['func'] m = importlib.import_module(modules) func = getattr(m,func_name) func() def execute(): while True: print('\033[36;1m欢迎来到权限管理系统:请您选择:1.登陆 2.注册 3.修改密码\033[0m') dic={'1':login,'2':register,'3':change_pwd} msg = input('登陆请按1,注册请按2,修改密码请按3:') if msg not in dic.keys(): print('\033[34;1m对不起没有该选项,请重新输入您的选择!\033[0m') continue func = dic[msg] say = func() if say: all_information()
具体代码没全按照上一篇随笔的结构图来编写
后续会有更新

浙公网安备 33010602011771号