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

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

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

前言:
✌ 作者简介:渴望力量的哈士奇,大家可以叫我 🐶哈士奇🐶 。(我真的有一只哈士奇)
🏆 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格式化)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/786278.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存