فهرست منبع

권한 부여 권한 생성

2DU 8 سال پیش
والد
کامیت
4b8ee189e7
3فایلهای تغییر یافته به همراه45 افزوده شده و 20 حذف شده
  1. 42 19
      app.py
  2. 2 0
      func.py
  3. 1 1
      version.md

+ 42 - 19
app.py

@@ -53,7 +53,7 @@ from func import *
 
 BaseRequest.MEMFILE_MAX = 1000 ** 4
 
-r_ver = '2.4.2'
+r_ver = '2.4.3'
 
 # 스킨 불러오기 부분
 TEMPLATE_PATH.insert(0, skin_check())
@@ -682,6 +682,9 @@ def admin_plus(name = None):
         if(request.forms.hidel):
             curs.execute("insert into alist (name, acl) values (?, 'hidel')", [name])
 
+        if(request.forms.give):
+            curs.execute("insert into alist (name, acl) values (?, 'give')", [name])
+
         if(request.forms.owner):
             curs.execute("insert into alist (name, acl) values (?, 'owner')", [name])
             
@@ -690,12 +693,12 @@ def admin_plus(name = None):
         return(redirect('/admin_plus/' + url_pas(name)))
     else:
         curs.execute('select acl from alist where name = ?', [name])
-        test = curs.fetchall()
+        acl_list = curs.fetchall()
         
         data = '<ul>'
-        exist_list = ['', '', '', '', '', '', '']
+        exist_list = ['', '', '', '', '', '', '', '']
 
-        for go in test:
+        for go in acl_list:
             if(go[0] == 'ban'):
                 exist_list[0] = 'checked="checked"'
             elif(go[0] == 'mdel'):
@@ -708,8 +711,10 @@ def admin_plus(name = None):
                 exist_list[4] = 'checked="checked"'
             elif(go[0] == 'hidel'):
                 exist_list[5] = 'checked="checked"'
-            elif(go[0] == 'owner'):
+            elif(go[0] == 'give'):
                 exist_list[6] = 'checked="checked"'
+            elif(go[0] == 'owner'):
+                exist_list[7] = 'checked="checked"'
 
         if(admin_check(None, None) != 1):
             state = 'disabled'
@@ -722,7 +727,8 @@ def admin_plus(name = None):
         data += '<li><input type="checkbox" ' + state +  ' name="check" ' + exist_list[3] + '> 사용자 검사</li>'
         data += '<li><input type="checkbox" ' + state +  ' name="acl" ' + exist_list[4] + '> 문서 ACL</li>'
         data += '<li><input type="checkbox" ' + state +  ' name="hidel" ' + exist_list[5] + '> 역사 숨김</li>'
-        data += '<li><input type="checkbox" ' + state +  ' name="owner" ' + exist_list[6] + '> 소유자</li></ul>'
+        data += '<li><input type="checkbox" ' + state +  ' name="give" ' + exist_list[6] + '> 권한 부여</li>'
+        data += '<li><input type="checkbox" ' + state +  ' name="owner" ' + exist_list[7] + '> 소유자</li></ul>'
 
         return(
             html_minify(
@@ -3170,10 +3176,29 @@ def acl(name = None):
             
 @route('/admin/<name:path>', method=['POST', 'GET'])
 def user_admin(name = None):
+    owner = admin_check(None, None)
+
+    curs.execute("select acl from user where id = ?", [name])
+    user = curs.fetchall()
+    if(not user):
+        return(re_error('/error/5'))
+    else:
+        if(owner != 1):
+            curs.execute('select name from alist where name = ? and acl = "owner"', [user[0][0]])
+            if(curs.fetchall()):
+                return(re_error('/error/3'))
+
+            if(ip_check() == name):
+                return(re_error('/error/3'))
+
     if(request.method == 'POST'):
-        if(admin_check(None, 'admin (' + name + ')') != 1):
+        if(admin_check(7, 'admin (' + name + ')') != 1):
             return(re_error('/error/3'))
 
+            curs.execute('select name from alist where name = ? and acl = "owner"', [request.forms.select])
+            if(curs.fetchall()):
+                return(re_error('/error/3'))
+
         if(request.forms.select == 'X'):
             curs.execute("update user set acl = 'user' where id = ?", [name])
         else:
@@ -3182,26 +3207,24 @@ def user_admin(name = None):
         
         return(redirect('/admin/' + url_pas(name)))            
     else:
-        if(admin_check(None, None) != 1):
-            return(re_error('/error/3'))
-
-        curs.execute("select acl from user where id = ?", [name])
-        user = curs.fetchall()
-        if(not user):
-            return(re_error('/error/5'))
+        if(admin_check(7, None) != 1):
+            return(re_error('/error/3'))            
 
         div = '<option value="X">X</option>'
             
-        curs.execute('select name from alist order by name asc')
+        curs.execute('select distinct name from alist order by name asc')
         get_alist = curs.fetchall()
         if(get_alist):
             i = 0
             name_rem = ''
             for data in get_alist:
-                if(name_rem != data[0]):
-                    name_rem = data[0]
-                    if(user[0][0] == data[0]):
-                        div += '<option value="' + data[0] + '" selected="selected">' + data[0] + '</option>'
+                if(user[0][0] == data[0]):
+                    div += '<option value="' + data[0] + '" selected="selected">' + data[0] + '</option>'
+                else:
+                    if(owner != 1):
+                        curs.execute('select name from alist where name = ? and acl = "owner"', [data[0]])
+                        if(not curs.fetchall()):
+                            div += '<option value="' + data[0] + '">' + data[0] + '</option>'
                     else:
                         div += '<option value="' + data[0] + '">' + data[0] + '</option>'
         

+ 2 - 0
func.py

@@ -165,6 +165,8 @@ def admin_check(num, what):
                 check = 'acl'
             elif(num == 6 and reset == 0):
                 check = 'hidel'
+            elif(num == 7 and reset == 0):
+                check = 'give'
             else:
                 check = 'owner'
 

+ 1 - 1
version.md

@@ -142,7 +142,7 @@
 
 ----
 ## 기타
- * 현재 버전 - v2.4.2
+ * 현재 버전 - v2.4.3
 
 ----
 ## 개발 이념