栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python语法进阶篇 - 81 - 综合实战 - 抽奖系统之admin模块 - 对用户添加封禁身份修改

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python语法进阶篇 - 81 - 综合实战 - 抽奖系统之admin模块 - 对用户添加封禁身份修改

万叶集
 隐约雷鸣,阴霾天空。 
 但盼风雨来,能留你在此。 

前言:
✌ 作者简介:渴望力量的哈士奇,大家可以叫我 哈士奇 。(我真的有一只哈士奇)
CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主
 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步
 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。
 如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦


系列专栏:
               ⛽️ Python全栈系列 - [更新中]     【 本文在该系列】
                        Python零基础入门篇
                        Python语法进阶篇
                网安之路系列
​                        网安之路踩坑篇
​                        网安知识扫盲篇
​                        Vulhub 漏洞复现篇
​                        Shell脚本编程篇
​                        Web攻防篇   2021年9月3日停止更新,转战先知等安全社区
​                        渗透工具使用集锦  2021年9月3日停止更新,转战先知等安全社区
​                ⭐️ 点点点工程师系列
​                        测试神器 - Charles 篇
​                        测试神器 - Fiddler 篇
​                        测试神器 - Jmeter 篇
​                        自动化 - RobotFrameWork 系列
​                        自动化 - 基于 JAVA 实现的WEB端UI自动化
                        自动化 - 基于 MonkeyRunner 实现的APP端UI自动化

文章目录
    •  admin 类的搭建
    •  获取用户的函数
    •  添加用户
    •  冻结与恢复用户及修改用户的身份

该章节我们将来开发 “admin.py” 模块的相关功能,今天主要有5件事情需要实现:

1、admin 类的搭建(继承 Base 类)

2、获取当前用户函数(包含获取身份)

3、添加用户(判断当前身份是否是管理员)

4、冻结与恢复用户(active 标签判断用户是否可用的标识)

5、修改用户身份(管理员操作修改 role为 “admin” 或者 “normal” ;"normal"用户可参与抽奖,"admin"用户只能是为普通用户服务的角色)

 admin 类的搭建

1、定义 Admin 类、构造函数,同时也利用super()函数继承并使用 Base 类的构造函数。

2、在被调用的 Base.py 模块 ,添加调试语句,验证 Admin 类 的调用是否成功。

代码示例如下:

# coding:utf-8


import os

from base import Base


"""
    ***************************************************************************************************************
    1、admin 类的搭建(继承 Base 类)
    2、获取当前用户函数(包含获取身份)
    3、添加用户(判断当前身份是否是管理员)
    4、冻结与恢复用户(active 标签判断用户是否可用的标识)
    5、修改用户身份(管理员操作修改 role为 "admin" 或者 "normal" ;"normal"用户可参与抽奖,"admin"用户只能是为普通用户服务的角色)
    ***************************************************************************************************************
"""


class Admin(Base):
    def __init__(self, username, user_json, gift_json):     # 定义构造函数,同时也利用super()函数继承并使用 Base 类的构造函数
        self.username = username
        super().__init__(user_json, gift_json)

        
if __name__ == '__main__':
    user_path = os.path.join(os.getcwd(), "storage", "user.json")
    gift_path = os.path.join(os.getcwd(), "storage", "gift.json")

	admin = Admin('Neo', user_path, gift_path)

运行结果如下:



 获取用户的函数

接下来编写获取用户的函数,首先最重要的就是获取用户的身份。

代码示例如下:

# coding:utf-8


import os

from base import Base
from common.error import NotUserError, UserActiveError, RoleError


"""
    ***************************************************************************************************************
    1、admin 类的搭建(继承 Base 类)
    2、获取当前用户函数(包含获取身份)
    3、添加用户(判断当前身份是否是管理员)
    4、冻结与恢复用户(active 标签判断用户是否可用的标识)
    5、修改用户身份(管理员操作修改 role为 "admin" 或者 "normal" ;"normal"用户可参与抽奖,"admin"用户只能是为普通用户服务的角色)
    ***************************************************************************************************************
"""


class Admin(Base):
    def __init__(self, username, user_json, gift_json):     # 定义构造函数,同时也利用super()函数继承并使用 Base 类的构造函数
        self.username = username
        super().__init__(user_json, gift_json)
        self.get_user()


    def get_user(self):
        users = self._Base__read_users()    # 注意 "__read_users()" 是 Base 类的私有函数,不能直接调用 "self.__read_users()"
        current_user = users.get(self.username)

        if current_user is None:            # 判断用户是否存在,不存在则抛出自定义 "error.py" 模块的 NotUserError 异常
            raise NotUserError('not user %s' % self.username)

        if current_user.get('active') == False:     # 判断用户可用状态,不可用则抛出自定义 "error.py" 模块的 UserActiveError 异常
            raise UserActiveError('the user %s had not use' % self.username)

        if current_user.get('role') != 'admin':
            raise RoleError('permission by admin')

        self.user = current_user
        self.role = current_user.get('role')
        self.name = current_user.get('username')
        self.active = current_user.get('active')


if __name__ == '__main__':
    gift_path = os.path.join(os.getcwd(), 'storage', 'gift.json')
    user_path = os.path.join(os.getcwd(), 'storage', 'user.json')

    admin = Admin('Neo', user_path, gift_path)

    admin.get_user()
    print(admin.name, admin.role)

运行结果如下:



 添加用户

添加用户之前,我们需要判断是否是 “admin” 的身份。

# coding:utf-8


import os

from base import Base
from common.error import NotUserError, UserActiveError, RoleError


"""
    ***************************************************************************************************************
    1、admin 类的搭建(继承 Base 类)
    2、获取当前用户函数(包含获取身份)
    3、添加用户(判断当前身份是否是管理员)
    4、冻结与恢复用户(active 标签判断用户是否可用的标识)
    5、修改用户身份(管理员操作修改 role为 "admin" 或者 "normal" ;"normal"用户可参与抽奖,"admin"用户只能是为普通用户服务的角色)
    ***************************************************************************************************************
"""


class Admin(Base):
    def __init__(self, username, user_json, gift_json):     # 定义构造函数,同时也利用super()函数继承并使用 Base 类的构造函数
        self.username = username
        super().__init__(user_json, gift_json)
        self.get_user()


    def get_user(self):
        users = self._Base__read_users()    # 注意 "__read_users()" 是 Base 类的私有函数,不能直接调用 "self.__read_users()"
        current_user = users.get(self.username)

        if current_user is None:            # 判断用户是否存在,不存在则抛出自定义 "error.py" 模块的 NotUserError 异常
            raise NotUserError('not user %s' % self.username)

        if current_user.get('active') == False:     # 判断用户可用状态,不可用则抛出自定义 "error.py" 模块的 UserActiveError 异常
            raise UserActiveError('the user %s had not use' % self.username)

        if current_user.get('role') != 'admin':
            raise RoleError('permission by admin')

        self.user = current_user
        self.role = current_user.get('role')
        self.name = current_user.get('username')
        self.active = current_user.get('active')


    def __check(self, message):     # 判断是否是管理员身份
        self.get_user()
        if self.role != 'admin':
            raise Exception(message)


    def add_user(self, username, role):     # 添加用户函数
        self.__check('permission')
        self._Base__write_user(username=username, role=role)        # 调用 Base 类的 "__write_user()" 函数添加用户啊


if __name__ == '__main__':
    gift_path = os.path.join(os.getcwd(), 'storage', 'gift.json')
    user_path = os.path.join(os.getcwd(), 'storage', 'user.json')

    admin = Admin('Neo', user_path, gift_path)

    # admin.get_user()
    # print(admin.name, admin.role)

    admin.add_user(username="Adem", role="normal")

    admin.get_user()

执行结果如下:



 冻结与恢复用户及修改用户的身份

冻结用户、恢复用户就是通过 active 标签判断用户是否可用, true 为可用状态, false 即禁用状态;

修改用户身份就更简单了,直接修改 role 标签即可,目前只有两个身份 'admin' 与 'normal'。

代码示例如下:

# coding:utf-8


import os

from base import Base
from common.error import NotUserError, UserActiveError, RoleError


"""
    ***************************************************************************************************************
    1、admin 类的搭建(继承 Base 类)
    2、获取当前用户函数(包含获取身份)
    3、添加用户(判断当前身份是否是管理员)
    4、冻结与恢复用户(active 标签判断用户是否可用的标识)
    5、修改用户身份(管理员操作修改 role为 "admin" 或者 "normal" ;"normal"用户可参与抽奖,"admin"用户只能是为普通用户服务的角色)
    ***************************************************************************************************************
"""


class Admin(Base):
    def __init__(self, username, user_json, gift_json):     # 定义构造函数,同时也利用super()函数继承并使用 Base 类的构造函数
        self.username = username
        super().__init__(user_json, gift_json)
        self.get_user()


    def get_user(self):
        users = self._Base__read_users()    # 注意 "__read_users()" 是 Base 类的私有函数,不能直接调用 "self.__read_users()"
        current_user = users.get(self.username)

        if current_user is None:            # 判断用户是否存在,不存在则抛出自定义 "error.py" 模块的 NotUserError 异常
            raise NotUserError('not user %s' % self.username)

        if current_user.get('active') == False:     # 判断用户可用状态,不可用则抛出自定义 "error.py" 模块的 UserActiveError 异常
            raise UserActiveError('the user %s had not use' % self.username)

        if current_user.get('role') != 'admin':
            raise RoleError('permission by admin')

        self.user = current_user
        self.role = current_user.get('role')
        self.name = current_user.get('username')
        self.active = current_user.get('active')


    def __check(self, message):     # 判断是否是管理员身份
        self.get_user()
        if self.role != 'admin':
            raise Exception(message)


    def add_user(self, username, role):     # 添加用户函数
        self.__check('permission')
        self._Base__write_user(username=username, role=role)        # 调用 Base 类的 "__write_user()" 函数添加用户


    def update_user_active(self, username):     # 变更用户的 active 状态
        self.__check('permission')
        self._Base__change_acitve(username=username)    # 调用 Base 类的 "__change_acitve" 函数变更用户的 active 状态


    def update_user_role(self, username, role):  # 变更用户的 role 状态 (权限)
        self.__check('permission')
        self._Base__change_role(username=username, role=role)   # 调用 Base 类的 "__change_role" 函数变更用户的 role 状态


if __name__ == '__main__':
    gift_path = os.path.join(os.getcwd(), 'storage', 'gift.json')
    user_path = os.path.join(os.getcwd(), 'storage', 'user.json')

    admin = Admin('Neo', user_path, gift_path)

    # admin.get_user()
    # print(admin.name, admin.role)

    admin.update_user_active(username="Adem")

    admin.update_user_role(username='Adem', role='admin')

运行结果如下:(将 “user.json” 文件内的内容进行JSON格式化)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/839669.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号