给用户绑定为开发者
个人信息中渲染角色和权限
{% extends 'cms/cms_base.html' %}{% block title %} 个人信息{% endblock %}{% block page_title %} {{ self.title() }}{% endblock %}{% block main_content %} {% set user = g.cms_user %} <table class="table table-bordered"> <tbody> <tr> <td>用户名:</td> <td>{{ user.username }}</td> </tr> <tr> <td>邮箱:</td> <td>{{ user.email }}</td> </tr> <tr> <td>角色:</td> <td> {% for role in user.roles %} {{ role.name }} {% if not loop.last %},{% endif %} {% endfor %} </td> </tr> <tr> <td>权限:</td> <td> {% for role in user.roles %} {{ role.desc }} {% if not loop.last %}/{% endif %} {% endfor %} </td> </tr> <tr> <td>加入时间:</td> <td>{{ user.join_time }}</td> </tr> </tbody> </table>{% endblock %}
由于一个用户可能有多个角色,所以这里就不在用户名后面渲染角色了,同一给用户名价格链接,跳转到个人中心
创建不同用户分别绑定不同角色
python manager.py create_cms_user -u 访问者用户 -p 123456 -e 133@qq.com
python manager.py add_user_to_role -e 133@qq.com -n 访问者
python manager.py create_cms_user -u 运营用户 -p 123456 -e 144@qq.com
python manager.py add_user_to_role -e 144@qq.com -n 运营
python manager.py create_cms_user -u 管理员用户 -p 123456 -e 155@qq.com
python manager.py add_user_to_role -e 155@qq.com -n 管理员
在钩子函数中使用蓝图.context_processor,以后只要是此蓝图返回的模板,都会携带此数据
@bp.context_processordef cms_context_processor(): """ 返回权限 """ return {"CMSPermission": CMSPersmission}
根据权限判断渲染的菜单
{% set cms_user = g.cms_user %}
{% if cms_user.has_permission(CMSPermission.POSTER) %}
<li class="nav-group post-manage"><a href="{{ url_for('cms.posts') }}">帖子管理</a></li>
{% endif %}
{% if cms_user.has_permission(CMSPermission.COMMENTER) %}
<li class="comments-manage"><a href="{{ url_for('cms.comments') }}">评论管理</a></li>
{% endif %}
{% if cms_user.has_permission(CMSPermission.BOARDER) %}
<li class="board-manage"><a href="{{ url_for('cms.boards') }}">板块管理</a></li>
{% endif %}
{% if cms_user.has_permission(CMSPermission.FRONTUSER) %}
<li class="nav-group user-manage"><a href="{{ url_for('cms.fusers') }}">前台用户管理</a></li>
{% endif %}
{% if cms_user.has_permission(CMSPermission.CMSUSER) %}
<li class="nav-group cmsuser-manage"><a href="{{ url_for('cms.cusers') }}">CMS用户管理</a></li>
{% endif %}
{% if cms_user.is_developer %}
<li class="cmsrole-manage"><a href="{{ url_for('cms.croles') }}">CMS组管理</a></li>
{% endif %}
使用不同角色登录