zoukankan      html  css  js  c++  java
  • CRM系统(第四部分)

     

    1、引入权限组件rbac

    1、settings配置app、中间件

     
    INSTALLED_APPS = [
        ... ...
        'crm.apps.CrmConfig',
        "stark.apps.StarkConfig",
        'rbac.apps.RbacConfig',
    ]
     

    中间件

    MIDDLEWARE = [
        。。。。
        'rbac.service.rbac.ValidPermission',
    ]

    2、员工表UserInfo和rbac.User表关联 一对一

      UserInfo中的用户名和密码也可删了,只留rbac.User中的用户名和密码。

     添加新的字段

     
    user= models.OneToOneField(to=User,null=True,on_delete=True)

    makemigrations  migrate

    3、在rbac组件中添加starkadmin

    rbac/stark.py

     
    from stark.service.stark import site,ModelStark
    
    from .models import *
    
    class UserConfig(ModelStark):
        list_display = ['name','roles']
    
    site.register(User,UserConfig)
    site.register(Role)
    
    class PermissionConfig(ModelStark):
    
    
        list_display = ['id','title','url','group','action']
    
    site.register(Permission,PermissionConfig)
    site.register(PermissionGroup)
     

    2、分配权限

    1、分配权限组

    2、分配权限

     

    3、分配角色

    4、分配用户

     

    5、rbac用户与crm的用户一一对应

     

     6、登录查看权限

     

    url

     
    from django.conf.urls import url
    from django.contrib import admin
    
    from crm import views
    
    from stark.service.stark import site
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^stark/', site.urls),
        url(r'^login/', views.login),
    ]
     

     crm/view  login的视图

    from django.shortcuts import render,HttpResponse
    # Create your views here.
    from rbac.models import User
    from rbac.service.perssions import initial_session
    
    def login(request):
        if request.method =='POST':
            user = request.POST.get('user')
            pwd = request.POST.get('pwd')
    
            user = User.objects.filter(name=user,pwd=pwd).first()
            if user:
                request.session['user_id']=user.pk
                # 注册权限到session中
                initial_session(request,user)
                return HttpResponse('登录成功')
    
        return render(request,'login.html',locals())

     login.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>login</title>
        <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css">
    </head>
    <body>
    <h3>CRM系统登录</h3>
    <div class="container">
        <div class="row">
            <div class="col-md-9">
                <form action="" method="post">
                    {% csrf_token %}
                    <p>用户名: <input class="form-control" type="text" name="user"></p>
                    <p>密码:<input class="form-control" type="password" name="pwd"></p>
                    <p><input class="btn btn-primary" type="submit"></p>
                </form>
    
            </div>
        </div>
    </div>
    </body>
    </html>
     

    3、登录、引入中间件

    1、引入中间件

    MIDDLEWARE = [
        'rbac.service.rbac.ValidPermission',
    ]

    2、不同的用户具有不同的权限

    3、修改rbac显示premission的title

     
        # 注册菜单权限
        # permissions = user.roles.all().values("permissions__url", "permissions__action", "permissions__group__title").distinct()
        permissions = user.roles.all().values("permissions__url", "permissions__action", "permissions__title").distinct()
    
    
                # menu_permission_list.append((item["permissions__url"], item["permissions__group__title"]))  # 组的名称
                menu_permission_list.append((item["permissions__url"], item["permissions__title"]))
               # 用自己permission的title
     

     4、模板继承:与rbac的base.html相同

     

     例如:chang_view.html

     
    {% extends 'base.html' %}
    
    {% block content %}
    
        <h3>编辑页面</h3>
    
        {% include 'form.html' %}
    
    {% endblock %}
     

     例如base.html

     
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
        <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css">
        <script src="/static/js/jquery-1.12.4.min.js"></script>
        <script src="/static/charts/highcharts.js"></script>
        <link rel="stylesheet" href="/static/css/add.css">
        <link rel="stylesheet" href="/static/css/list.css">
        <link rel="stylesheet" href="/static/css/base.css">
    
    </head>
    <body>
    
    
    <div class="header">
        <span style="background-color: azure">{{ user.name }}</span>
    
    </div>
    
    <div class="container">
    
        {% load my_tags %}
        <div class="menu left">
            {% get_menu request %}
        </div>
    
    
        <div class="content right">
            {% block content %}
    
    
            {% endblock %}
        </div>
    
    </div>
    
    </body>
    </html>
     
  • 相关阅读:
    20199307 2019-2020-2 《网络攻防实践》第二周作业
    20199307 2019-2020-2 《网络攻防实践》第一周作业
    20199307 《网络攻防实践》假期作业
    缓冲区溢出漏洞实验
    2019-2020-1 20199307《Linux内核原理与分析》第十二周作业
    2019-2020-1 20199307《Linux内核原理与分析》第十一周作业
    第二周测试-myod(选做)
    2019-2020-1 20199307《Linux内核原理与分析》第九周作业
    20199306 2019-2020-2 《网络攻防实践》第3周作业
    20199306 2019-2020-2 《网络攻防实践》第2周作业
  • 原文地址:https://www.cnblogs.com/geogre123/p/9741885.html
Copyright © 2011-2022 走看看