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 %}

    使用不同角色登录

  • 相关阅读:
    php去除数组中重复值,并返回结果!
    SignalR 2 入门
    SignalR支持的平台
    SignalR简介
    作业调度系统quartz.net
    Oracle安装心得
    maven的项目目录解析
    web.xml的<url-parttern>的匹配规则
    Web.xml中四种验证方式
    Web.xml
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11931563.html
Copyright © 2011-2022 走看看