#!/bin/bin/env python
# -*-coding:utf-8 -*-
# 装饰器解释时从下往上
# 执行时从上往下执行
# 定义一个全局变量,用来接收用户登录信息
USER_INFO = {'is_login': False}
def check_admin(func):
"""
检查是否有用户登录
:param func: 引用当前装饰器的函数,并执行
:return:返回引用当前装饰器的函数执行后的值
"""
def inner(*args, **kwargs):
if USER_INFO.get('is_login', None):
ret = func(*args, **kwargs)
return ret
else:
print("请先登录")
return inner
def check_permission(func):
"""
检查权限是否为管理员,如果是则执行func函数,否则不执行
:param func:引用当前装饰器的函数,并执行
:return:返回引用当前装饰器的函数执行后的值
"""
def inner(*args, **kwargs):
if USER_INFO['roles'] == '1':
ret = func(*args, **kwargs)
return ret
else:
print("you 没有权限")
return inner
def login():
user = input("username:")
roles = input("username roles:")
USER_INFO['is_login'] = True
USER_INFO['user'] = user
USER_INFO['roles'] = roles
print(USER_INFO)
return USER_INFO
@check_permission
@check_admin
def admin_menu():
"""
管理员的菜单,禁止普通用户查看此菜单
:return:None
"""
print("