소스 검색

添加项目控制功能

tanghongbin 5 년 전
부모
커밋
71b63c324e
12개의 변경된 파일383개의 추가작업 그리고 33개의 파일을 삭제
  1. 41 0
      controller/LangProjectController.py
  2. 19 1
      controller/User.py
  3. 2 1
      langer/urls.py
  4. 25 1
      model/models.py
  5. 43 0
      web/avss_index.html
  6. 15 10
      web/css/style.css
  7. 3 1
      web/imgTab.html
  8. 46 2
      web/index.html
  9. 45 1
      web/langTab.html
  10. 4 0
      web/login.html
  11. 97 16
      web/userTab.html
  12. 43 0
      web/zosi_link_index.html

+ 41 - 0
controller/LangProjectController.py

@@ -0,0 +1,41 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+from django.views.generic.base import View, TemplateView
+
+from model.models import UserModel, LangProjectModel
+from object.ResponseObject import ResponseObject
+from object.TokenObject import TokenObject
+
+
+class LangProjectView(TemplateView):
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.POST
+        operation = kwargs.get('operation', None)
+        return self.validate(request_dict, operation)
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.GET
+        operation = kwargs.get('operation', None)
+        return self.validate(request_dict, operation)
+
+    def validate(self, request_dict, operation):
+        response = ResponseObject()
+        token = request_dict.get('token', None)
+        tko = TokenObject(token)
+        if tko.code == 0:
+            userID = tko.userID
+            user_qs = UserModel.objects.filter(id=userID, username='admin')
+            if not user_qs.exists():
+                return response.json(403)
+
+        if operation == 'query':
+            return self.do_query(request_dict, response)
+        else:
+            return response.json(403)
+
+    def do_query(self, request_dict, response):
+        lp_qs = LangProjectModel.objects.filter().values()
+        return response.json(0, list(lp_qs))

+ 19 - 1
controller/User.py

@@ -19,7 +19,7 @@ from django.views.decorators.csrf import csrf_exempt
 from django.utils.decorators import method_decorator
 from object.ResponseObject import ResponseObject
 from django.contrib.auth.hashers import make_password, check_password
-from model.models import UserModel, LangSetModel, LangAreaModel, LangPermModel
+from model.models import UserModel, LangSetModel, LangAreaModel, LangPermModel, ProjectPermModel, LangProjectModel
 import time
 from object.TokenObject import TokenObject
 
@@ -75,7 +75,12 @@ class loginView(TemplateView):
         password = request_dict.get('password', None)
         if username and password:
             user_qs = UserModel.objects.filter(username=username)
+            pp_qs = ProjectPermModel.objects.filter(user__id=user_qs[0].id).values('project__id')
+            pp_data = []
+            for pp in pp_qs:
+                pp_data.append(pp['project__id'])
 
+            print('login')
             if not user_qs.exists():
                 return response.json(401)
             if check_password(password, user_qs[0].password):
@@ -83,6 +88,8 @@ class loginView(TemplateView):
                 res = tko.generate({'userID': user_qs[0].id})
                 res['role_id'] = user_qs[0].role_id
                 res['role_type'] = user_qs[0].role_type
+                res['project_perm'] = pp_data
+                print(res)
 
                 return response.json(0, res)
             else:
@@ -115,6 +122,7 @@ class queryView(TemplateView):
 
             ls_qs = LangSetModel.objects.filter().values('user__id', 'lang__lang')
             lp_qs = LangPermModel.objects.filter().values('user__id', 'lang__lang')
+            pp_qs = ProjectPermModel.objects.filter().values('user__id', 'project__name')
             res = []
             for um in um_qs:
                 for ls in ls_qs:
@@ -127,6 +135,11 @@ class queryView(TemplateView):
                         if 'lp_arr' not in um:
                             um['lp_arr'] = []
                         um['lp_arr'].append(lp['lang__lang'])
+                for pp in pp_qs:
+                    if um['id'] == pp['user__id']:
+                        if 'pp_arr' not in um:
+                            um['pp_arr'] = []
+                        um['pp_arr'].append(pp['project__name'])
                 res.append(um)
             return response.json(0, res)
         else:
@@ -152,6 +165,7 @@ class updateView(TemplateView):
         langPermArr = request_dict.get('langPermArr', None)
         username = request_dict.get('username', None)
         role_id = request_dict.get('role_id', None)
+        projectPermArr = request_dict.get('projectPermArr', None)
         nowTime = int(time.time())
         tko = TokenObject(token)
         if tko.code == 0:
@@ -163,12 +177,16 @@ class updateView(TemplateView):
             if id and langSetArr:
                 LangSetModel.objects.filter(user__id=id).delete()
                 LangPermModel.objects.filter(user__id=id).delete()
+                ProjectPermModel.objects.filter(user__id=id).delete()
                 for ls in langSetArr:
                     LangSetModel.objects.create(lang=LangAreaModel.objects.get(id=ls),
                                                 user=UserModel.objects.get(id=id), addTime=nowTime, updTime=nowTime)
                 for lp in langPermArr:
                     LangPermModel.objects.create(lang=LangAreaModel.objects.get(id=lp),
                                                  user=UserModel.objects.get(id=id), addTime=nowTime, updTime=nowTime)
+                for pp in projectPermArr:
+                    ProjectPermModel.objects.create(project=LangProjectModel.objects.get(id=pp),
+                                                    user=UserModel.objects.get(id=id))
                 return response.json(0)
             else:
                 return response.json(0)

+ 2 - 1
langer/urls.py

@@ -1,7 +1,7 @@
 from django.contrib import admin
 from django.urls import path, re_path
 from controller import User, LangSet, LangWord, LangArea, WebHook, AsImg, SysSet, Lottery, SkuSuitName, \
-    SkuConditionName, SkuRuleName, EmailSend, LangAVSSController
+    SkuConditionName, SkuRuleName, EmailSend, LangAVSSController, LangProjectController
 
 urlpatterns = [
     path('admin/', admin.site.urls),
@@ -41,5 +41,6 @@ urlpatterns = [
     re_path('cku_rule/(?P<operation>.*)', SkuRuleName.skuRuleView.as_view()),
     re_path('email_send/(?P<operation>.*)', EmailSend.EmailSendView.as_view()),
     re_path('avss/(?P<operation>.*)', LangAVSSController.LangAVSSView.as_view()),
+    re_path('langProject/(?P<operation>.*)', LangProjectController.LangProjectView.as_view())
 
 ]

+ 25 - 1
model/models.py

@@ -206,4 +206,28 @@ class LangLocationModel(models.Model):
     class Meta:
         verbose_name = 'avss的词汇的位置'
         verbose_name_plural = verbose_name
-        db_table = 'lang_location'
+        db_table = 'lang_location'
+
+
+class LangProjectModel(models.Model):
+    id = models.AutoField(primary_key=True)
+    name = models.CharField(max_length=32, null=False, verbose_name='项目名')
+    add_time = models.IntegerField(default=0, verbose_name='添加时间')
+    update_time = models.IntegerField(default=0, verbose_name='更新时间')
+
+    class Meta:
+        verbose_name = '语言项目'
+        verbose_name_plural = verbose_name
+        db_table = 'lang_project'
+
+
+# 用户关联可编辑项目配置
+class ProjectPermModel(models.Model):
+    id = models.AutoField(primary_key=True)
+    user = models.ForeignKey(UserModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联用户表')
+    project = models.ForeignKey(LangProjectModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联项目表')
+
+    class Meta:
+        verbose_name = '用户关联项目表'
+        verbose_name_plural = verbose_name
+        db_table = 'project_perm'

+ 43 - 0
web/avss_index.html

@@ -43,23 +43,35 @@
     </div>
 
     <!-- tab-menu -->
+    <div id="zosi" class="menu">
     <input type="radio" class="tab-1" name="tab" onclick="location.href='index.html'">
     <span>Home</span><i class="fa fa-home"></i>
+    </div>
 
+    <div id="avss" class="menu">
     <input type="radio" class="tab-5" name="tab" checked="checked">
     <span>AVSS</span><i class="fa fa-language"></i>
+    </div>
 
+    <div id="zosi_link" class="menu">
     <input type="radio" class="tab-6" name="tab" onclick="location.href='zosi_link_index.html'">
     <span>Zosi Link</span><i class="fa fa-language"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-2" name="tab" onclick="location.href='langTab.html'">
     <span>Lang</span><i class="fa fa-medium"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-3" name="tab" onclick="location.href='userTab.html'">
     <span>Users</span><i class="fa fa-user"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-4" name="tab" onclick="location.href='imgTab.html'">
     <span>Azimg</span><i class="fa fa-image"></i>
+    </div>
 
     <!--
 
@@ -218,6 +230,7 @@
             "showMethod": "fadeIn",
             "hideMethod": "fadeOut"
         }
+        hideProject();
         var page = GetUrlParam('page')
         if (!page) {
             page = 1
@@ -663,6 +676,36 @@
         )
 
     }
+    function hideProject() {
+        let project_perm = JSON.parse($.cookie('project_perm'));
+        console.log('project_perm is ' + project_perm);
+        if (project_perm && project_perm.length > 0) {
+            let zosiFlag = $.inArray(1, project_perm);
+            console.log('zosiFlag is ' + zosiFlag);
+            if (zosiFlag >= 0) {
+                $("#zosi").show();
+            } else {
+                $("#zosi").hide();
+            }
+
+            let avssFlag = $.inArray(2, project_perm);
+            console.log('avssFlag is ' + avssFlag);
+            if (avssFlag >= 0) {
+                $("#avss").show();
+            } else {
+                $("#avss").hide();
+            }
+
+            let zosiLinkFlag = $.inArray(3, project_perm);
+            console.log('zosiLinkFlag is ' + zosiLinkFlag);
+            if (zosiLinkFlag >= 0) {
+                $("#zosi_link").show();
+            } else {
+                $("#zosi_link").hide();
+            }
+
+        }
+    }
 </script>
 </body>
 </html>

+ 15 - 10
web/css/style.css

@@ -109,42 +109,47 @@ header a{
 	height: auto;
 }
 
-.clear-backend > input {
+.menu{
+	width: 200px;
+	display: block;
+}
+
+.menu > input {
 	position: absolute;
 	filter: alpha(opacity=0);
 	opacity: 0;
 }
 
-.clear-backend > input:hover {
+.menu > input:hover {
 	cursor: pointer;
 }
 
-.clear-backend > input:hover + span,
-.clear-backend > input:checked + span {
+.menu > input:hover + span,
+.menu > input:checked + span {
 	background: #fff;
 	color: #1ABC9C;
 }
-.clear-backend > input:checked + span + i {
+.menu > input:checked + span + i {
 	color: #1ABC9C;
 }
 
-.clear-backend > i {
+.menu > i {
 	position: absolute;
 	margin-top: -40px;
 	padding: 0 20px;
 	font-size: 20px;
 }
 
-.clear-backend > span,
-.clear-backend > i {
+.menu > span,
+.menu > i {
 	-webkit-transition: all .5s;
 	   -moz-transition: all .5s;
 		 -o-transition: all .5s;
 			transition: all .5s;
 }
 
-.clear-backend > input,
-.clear-backend > span {
+.menu > input,
+.menu > span {
 	background: #f0f0f0;
 	display: block;
 	width: 200px;

+ 3 - 1
web/imgTab.html

@@ -41,8 +41,10 @@
     <input type="radio" class="tab-3" name="tab" onclick="location.href='userTab.html'">
     <span>Users</span><i class="fa fa-user"></i>
     -->
+    <div class="menu">
     <input type="radio" class="tab-4" name="tab" checked="checked">
     <span>Azimg</span><i class="fa fa-image"></i>
+    </div>
 
     <!-- tab-top-bar -->
     <div class="top-bar">
@@ -69,7 +71,7 @@
 
     <!-- tab-content -->
     <div class="tab-content" style="overflow: auto">
-        <section class="tab-item-4" style="height: 100%;width: 100%">
+        <section class="tab-item-4" style="height: 100%;width: 100%;display: block">
             <div class="container-fluid">
                 <div class="row">
                     <div class="col-md-12">

+ 46 - 2
web/index.html

@@ -45,24 +45,35 @@
     </div>
 
     <!-- tab-menu -->
+    <div id="zosi" class="menu">
     <input type="radio" class="tab-1" name="tab" checked="checked">
     <span>Home</span><i class="fa fa-home"></i>
+    </div>
 
+    <div id="avss" class="menu">
     <input type="radio" class="tab-5" name="tab" onclick="location.href='avss_index.html'">
     <span>AVSS</span><i class="fa fa-language"></i>
+    </div>
 
+    <div id="zosi_link" class="menu">
     <input type="radio" class="tab-6" name="tab" onclick="location.href='zosi_link_index.html'">
     <span>Zosi Link</span><i class="fa fa-language"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-2" name="tab" onclick="location.href='langTab.html'">
     <span>Lang</span><i class="fa fa-medium"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-3" name="tab" onclick="location.href='userTab.html'">
     <span>Users</span><i class="fa fa-user"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-4" name="tab" onclick="location.href='imgTab.html'">
     <span>Azimg</span><i class="fa fa-image"></i>
-
+    </div>
     <!--
 
 
@@ -111,7 +122,7 @@
 
     <!-- tab-content -->
     <div class="tab-content" style="overflow: auto">
-        <section class="tab-item-1" style="height: 100%;width: 100%">
+        <section class="tab-item-1" style="height: 100%;width: 100%; display: block">
             <div class="container-fluid">
                 <div class="row">
                     <div id="searchCheckBox" class="col-md-8"></div>
@@ -220,6 +231,7 @@
             "showMethod": "fadeIn",
             "hideMethod": "fadeOut"
         }
+        hideProject()
         var page = GetUrlParam('page')
         if (!page) {
             page = 1
@@ -666,6 +678,38 @@
         )
 
     }
+
+    function hideProject() {
+        let project_perm = JSON.parse($.cookie('project_perm'));
+        console.log('project_perm is ' + project_perm);
+        if(project_perm && project_perm.length > 0){
+            let zosiFlag = $.inArray(1, project_perm);
+            console.log('zosiFlag is ' + zosiFlag);
+            if(zosiFlag >= 0){
+                $("#zosi").show();
+            }else{
+                $("#zosi").hide();
+            }
+
+            let avssFlag = $.inArray(2, project_perm);
+            console.log('avssFlag is ' + avssFlag);
+            if(avssFlag >= 0){
+                $("#avss").show();
+            }else{
+                $("#avss").hide();
+            }
+
+            let zosiLinkFlag = $.inArray(3, project_perm);
+            console.log('zosiLinkFlag is ' + zosiLinkFlag);
+            if(zosiLinkFlag >= 0){
+                $("#zosi_link").show();
+            }else{
+                $("#zosi_link").hide();
+            }
+
+        }
+
+    }
 </script>
 </body>
 </html>

+ 45 - 1
web/langTab.html

@@ -28,23 +28,35 @@
             </a>
         </div>
     </div>
+    <div id="zosi" class="menu">
     <input type="radio" class="tab-1" name="tab" onclick="location.href='index.html'">
     <span>Home</span><i class="fa fa-home"></i>
+    </div>
 
+    <div id="avss" class="menu">
     <input type="radio" class="tab-5" name="tab" onclick="location.href='avss_index.html'">
     <span>AVSS</span><i class="fa fa-language"></i>
+    </div>
 
+    <div id="zosi_link" class="menu">
     <input type="radio" class="tab-6" name="tab" onclick="location.href='zosi_link_index.html'">
     <span>Zosi Link</span><i class="fa fa-language"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-2" name="tab" checked="checked">
     <span>Lang</span><i class="fa fa-medium"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-3" name="tab" onclick="location.href='userTab.html'">
     <span>Users</span><i class="fa fa-user"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-4" name="tab" onclick="location.href='imgTab.html'">
     <span>Azimg</span><i class="fa fa-image"></i>
+    </div>
 
     <!-- tab-top-bar -->
     <div class="top-bar">
@@ -72,7 +84,7 @@
 
     <!-- tab-content -->
     <div class="tab-content" style="overflow: auto">
-        <section class="tab-item-2" style="height: 100%;width: 100%">
+        <section class="tab-item-2" style="height: 100%;width: 100%;display: block">
             <div class="container-fluid">
                 <div class="row">
                     <div class="col-md-12">
@@ -156,6 +168,7 @@
 <script type="text/javascript">
     let lang_data
     $(function () {
+        hideProject()
         let post_data = {
             'token': $.cookie('access_token'),
         };
@@ -321,6 +334,37 @@
             );
         }
     }
+
+    function hideProject() {
+        let project_perm = JSON.parse($.cookie('project_perm'));
+        console.log('project_perm is ' + project_perm);
+        if (project_perm && project_perm.length > 0) {
+            let zosiFlag = $.inArray(1, project_perm);
+            console.log('zosiFlag is ' + zosiFlag);
+            if (zosiFlag >= 0) {
+                $("#zosi").show();
+            } else {
+                $("#zosi").hide();
+            }
+
+            let avssFlag = $.inArray(2, project_perm);
+            console.log('avssFlag is ' + avssFlag);
+            if (avssFlag >= 0) {
+                $("#avss").show();
+            } else {
+                $("#avss").hide();
+            }
+
+            let zosiLinkFlag = $.inArray(3, project_perm);
+            console.log('zosiLinkFlag is ' + zosiLinkFlag);
+            if (zosiLinkFlag >= 0) {
+                $("#zosi_link").show();
+            } else {
+                $("#zosi_link").hide();
+            }
+
+        }
+    }
 </script>
 </body>
 </html>

+ 4 - 0
web/login.html

@@ -197,6 +197,10 @@
                     setCookie('access_token', data['res']['access_token'], data['res']['access_expire'])
                     setCookie('refresh_token', data['res']['refresh_token'], data['res']['refresh_expire'])
                     setCookie('role', data['res']['role_type'], data['res']['access_expire'])
+
+                    if(data['res']['project_perm']) {
+                        setCookie('project_perm', JSON.stringify(data['res']['project_perm']), data['res']['access_expire']);
+                    }
                     console.log(data)
                     //window.location.href = "http://localhost:63339/web/index.html";
                     if (username == 'saler') {

+ 97 - 16
web/userTab.html

@@ -28,23 +28,35 @@
             </a>
         </div>
     </div>
+    <div id="zosi" class="menu">
     <input type="radio" class="tab-1" name="tab" onclick="location.href='index.html'">
     <span>Home</span><i class="fa fa-home"></i>
+    </div>
 
+    <div id="avss" class="menu">
     <input type="radio" class="tab-5" name="tab" onclick="location.href='avss_index.html'">
     <span>AVSS</span><i class="fa fa-language"></i>
+    </div>
 
+    <div id="zosi_link" class="menu">
     <input type="radio" class="tab-6" name="tab" onclick="location.href='zosi_link_index.html'">
     <span>Zosi Link</span><i class="fa fa-language"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-2" name="tab" onclick="location.href='langTab.html'">
     <span>Lang</span><i class="fa fa-medium"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-3" name="tab" checked="checked">
     <span>Users</span><i class="fa fa-user"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-4" name="tab" onclick="location.href='imgTab.html'">
     <span>Azimg</span><i class="fa fa-image"></i>
+    </div>
 
     <!-- tab-top-bar -->
     <div class="top-bar">
@@ -71,7 +83,7 @@
 
     <!-- tab-content -->
     <div class="tab-content" style="overflow: auto">
-        <section class="tab-item-3" style="height: 100%;width: 100%">
+        <section class="tab-item-3" style="height: 100%;width: 100%;display: block">
             <div class="container-fluid">
                 <div class="row">
                     <div class="col-md-12">
@@ -108,6 +120,7 @@
                             <tr>
                                 <th>编号</th>
                                 <th>用户</th>
+                                <th>项目</th>
                                 <th>语言</th>
                                 <th>角色</th>
                                 <th>操作</th>
@@ -164,9 +177,11 @@
 </div>
 
 <script type="text/javascript">
-    let index_data
-    let lang_data
+    let index_data;
+    let lang_data;
+    let project_data;
     $(function () {
+        hideProject()
         let post_data = {
             'token': $.cookie('access_token'),
         };
@@ -194,6 +209,17 @@
                 }
             }
         );
+        $.postJSON(
+            http_ip_prot + 'langProject/query', JSON.stringify(post_data),
+            function (data) {
+                if (data['code'] == 0) {
+                    project_data = data['res']
+                    console.log(project_data)
+                } else {
+                    alert(data['msg'])
+                }
+            }
+        );
     });
 
     function addTable(data) {
@@ -207,7 +233,13 @@
             });
             langArr_td += '</td>';
 
-            body_html += '<tr><td>' + obj['id'] + '</td><td>' + obj['username'] + '</td>' + langArr_td + '<td>' + obj['role_id'] + '</td><td>' + edit_btn + '&nbsp;&nbsp;&nbsp;' + del_btn + '</td> </tr>'
+            let langProject_td = '<td>';
+            $.each(obj['pp_arr'], function (index, value) {
+                langProject_td += (value + '&nbsp;&nbsp')
+            });
+            langProject_td += '</td>'
+
+            body_html += '<tr><td>' + obj['id'] + '</td><td>' + obj['username'] + '</td>' + langProject_td + langArr_td + '<td>' + obj['role_id'] + '</td><td>' + edit_btn + '&nbsp;&nbsp;&nbsp;' + del_btn + '</td> </tr>'
         })
         $('#tabBody').html(body_html)
     }
@@ -258,18 +290,20 @@
 
     function editFunc(id) {
         // alert(langKey)
-        console.log(index_data)
-        $('#modal-container-edit').modal('show')
-        let user_lang_arr
-        let html_edit = '<label for="editDataInput" class="form-group">用户名:</label>'
-        let user_lang_perm
+        console.log(index_data);
+        $('#modal-container-edit').modal('show');
+        let user_lang_arr;
+        let html_edit = '<label for="editDataInput" class="form-group">用户名:</label>';
+        let user_lang_perm;
+        let project_perm;
         $.each(index_data, function (idx, obj) {
             if (id == obj['id']) {
-                user_lang_arr = obj['lang_arr']
-                user_lang_perm = obj['lp_arr']
-                html_edit += '<input type="text" class="form-control" id="editDataInput" value="' + obj['username'] + '" lid="' + id + '">'
-                html_edit += '<label for="editDataRole" class="form-group">角色:</label>'
-                html_edit += '<input type="text" class="form-control" id="editDataRole" value="' + obj['role_id'] + '" lid="' + id + '">'
+                user_lang_arr = obj['lang_arr'];
+                user_lang_perm = obj['lp_arr'];
+                project_perm = obj['pp_arr'];
+                html_edit += '<input type="text" class="form-control" id="editDataInput" value="' + obj['username'] + '" lid="' + id + '">';
+                html_edit += '<label for="editDataRole" class="form-group">角色:</label>';
+                html_edit += '<input type="text" class="form-control" id="editDataRole" value="' + obj['role_id'] + '" lid="' + id + '">';
             }
         });
 
@@ -297,18 +331,34 @@
         })
         //console.log(user_lang_arr)
 
+        html_edit += '<hr><span class="form-group">项目:</span><span class="float-right">可否编辑</span>';
+        $.each(project_data, function (index, object) {
+            let check_perm_val = '';
+            if(project_perm){
+                let flag = $.inArray(object['name'], project_perm);
+                if(flag >= 0){
+                    check_perm_val += 'checked="checked"';
+                }
+            }
+            html_edit += ('<label class="form-control">' + object['name'] + '<input name="projectpermname" type="checkbox" '+check_perm_val+' aria-label="Checkbox for following text input" class="float-right" value="' + object['id'] + '"></label>')
+        })
+
         $('#edit_model_form').html(html_edit)
     }
 
     function editRow() {
-        let sub_lang_arr = []
-        let sub_perm_arr = []
+        let sub_lang_arr = [];
+        let sub_perm_arr = [];
+        let sub_project_perm_arr = [];
         $.each($('input[name="langsetname"]:checked'), function () {
             sub_lang_arr.push($(this).val())
         });
         $.each($('input[name="langpermname"]:checked'), function () {
             sub_perm_arr.push($(this).val())
         });
+        $.each($('input[name="projectpermname"]:checked'), function () {
+            sub_project_perm_arr.push($(this).val())
+        });
         console.log('--------')
         console.log(sub_perm_arr)
         console.log('--------')
@@ -319,6 +369,7 @@
             'role_id': $('#editDataRole').val(),
             'langSetArr': sub_lang_arr,
             'langPermArr':sub_perm_arr,
+            'projectPermArr': sub_project_perm_arr
         }
         console.log(post_data)
         $.postJSON(
@@ -358,6 +409,36 @@
             }
         );
     }
+    function hideProject() {
+        let project_perm = JSON.parse($.cookie('project_perm'));
+        console.log('project_perm is ' + project_perm);
+        if (project_perm && project_perm.length > 0) {
+            let zosiFlag = $.inArray(1, project_perm);
+            console.log('zosiFlag is ' + zosiFlag);
+            if (zosiFlag >= 0) {
+                $("#zosi").show();
+            } else {
+                $("#zosi").hide();
+            }
+
+            let avssFlag = $.inArray(2, project_perm);
+            console.log('avssFlag is ' + avssFlag);
+            if (avssFlag >= 0) {
+                $("#avss").show();
+            } else {
+                $("#avss").hide();
+            }
+
+            let zosiLinkFlag = $.inArray(3, project_perm);
+            console.log('zosiLinkFlag is ' + zosiLinkFlag);
+            if (zosiLinkFlag >= 0) {
+                $("#zosi_link").show();
+            } else {
+                $("#zosi_link").hide();
+            }
+
+        }
+    }
 </script>
 </body>
 </html>

+ 43 - 0
web/zosi_link_index.html

@@ -43,23 +43,35 @@
     </div>
 
     <!-- tab-menu -->
+    <div id="zosi" class="menu">
     <input type="radio" class="tab-1" name="tab" onclick="location.href='index.html'">
     <span>Home</span><i class="fa fa-home"></i>
+    </div>
 
+    <div id="avss" class="menu">
     <input type="radio" class="tab-5" name="tab" onclick="location.href='avss_index.html'">
     <span>AVSS</span><i class="fa fa-language"></i>
+    </div>
 
+    <div id="zosi_link" class="menu">
     <input type="radio" class="tab-6" name="tab" checked="checked">
     <span>Zosi Link</span><i class="fa fa-language"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-2" name="tab" onclick="location.href='langTab.html'">
     <span>Lang</span><i class="fa fa-medium"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-3" name="tab" onclick="location.href='userTab.html'">
     <span>Users</span><i class="fa fa-user"></i>
+    </div>
 
+    <div class="menu">
     <input type="radio" class="tab-4" name="tab" onclick="location.href='imgTab.html'">
     <span>Azimg</span><i class="fa fa-image"></i>
+    </div>
 
     <!--
 
@@ -218,6 +230,7 @@
             "showMethod": "fadeIn",
             "hideMethod": "fadeOut"
         }
+        hideProject();
         var page = GetUrlParam('page')
         if (!page) {
             page = 1
@@ -664,6 +677,36 @@
         )
 
     }
+    function hideProject() {
+        let project_perm = JSON.parse($.cookie('project_perm'));
+        console.log('project_perm is ' + project_perm);
+        if (project_perm && project_perm.length > 0) {
+            let zosiFlag = $.inArray(1, project_perm);
+            console.log('zosiFlag is ' + zosiFlag);
+            if (zosiFlag >= 0) {
+                $("#zosi").show();
+            } else {
+                $("#zosi").hide();
+            }
+
+            let avssFlag = $.inArray(2, project_perm);
+            console.log('avssFlag is ' + avssFlag);
+            if (avssFlag >= 0) {
+                $("#avss").show();
+            } else {
+                $("#avss").hide();
+            }
+
+            let zosiLinkFlag = $.inArray(3, project_perm);
+            console.log('zosiLinkFlag is ' + zosiLinkFlag);
+            if (zosiLinkFlag >= 0) {
+                $("#zosi_link").show();
+            } else {
+                $("#zosi_link").hide();
+            }
+
+        }
+    }
 </script>
 </body>
 </html>