zoukankan      html  css  js  c++  java
  • 一百零九:CMS系统之前端根据不同权限渲染不同菜单

    给用户绑定为开发者

    个人信息中渲染角色和权限

    {% 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_processor
    def 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 %}

    使用不同角色登录

  • 相关阅读:
    HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别
    手动部署 Ceph Mimic 三节点
    Ceph 分布式存储架构解析与工作原理
    OpenStack 的单元测试
    OpenStack 虚拟机启动流程 UML 分析(内含 UML 源码)
    我非要捅穿这 Neutron(四)Open vSwitch in Neutron
    手动部署 OpenStack Rocky 双节点
    OpenStack Blazar 架构解析与功能实践
    基于 Open vSwitch 的 OpenFlow 实践
    OpenFlow/SDN 的缘起与发展
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11931563.html
Copyright © 2011-2022 走看看