2
0
Эх сурвалжийг харах

편집요청 가능 차단

https://github.com/openNAMU/openNAMU/issues/2064
잉여개발기 2 жил өмнө
parent
commit
fdbdcbc9ad

+ 9 - 3
route/api_user_info.py

@@ -49,7 +49,9 @@ def api_user_info(user_name = ''):
                     regex_ban = 1
                     
                     data_result['ban']['type'] = 'regex'
-                    if db_data[0] == 'O':
+                    if db_data[0] == 'E':
+                        data_result['ban']['login_able'] = '2'
+                    elif db_data[0] == 'O':
                         data_result['ban']['login_able'] = '1'
                     else:
                         data_result['ban']['login_able'] = '0'
@@ -68,7 +70,9 @@ def api_user_info(user_name = ''):
                 db_data = curs.fetchall()
                 if db_data:
                     data_result['ban']['type'] = 'normal'
-                    if db_data[0][0] == 'O':
+                    if db_data[0][0] == 'E':
+                        data_result['ban']['login_able'] = '2'
+                    elif db_data[0][0] == 'O':
                         data_result['ban']['login_able'] = '1'
                     else:
                         data_result['ban']['login_able'] = '0'
@@ -111,7 +115,9 @@ def api_user_info(user_name = ''):
             'band_blocked',
             'ip',
             'ban',
-            'level'
+            'level',
+            'option',
+            'edit_request_able'
         ]
         lang_data = { for_a : load_lang(for_a) for for_a in lang_data_list }
                 

+ 16 - 5
route/give_user_ban.py

@@ -21,10 +21,18 @@ def give_user_ban(name = None, ban_type = ''):
                 end = '0'
             
             regex_get = flask.request.form.get('regex', None)
-            login = flask.request.form.get('login', '')
             why = flask.request.form.get('why', '')
 
-            release = flask.request.form.get('release', '')
+            release = ''
+            login = ''
+            
+            ban_option = flask.request.form.get('ban_option', '')
+            if ban_option == 'login_able':
+                login = 'O'
+            elif ban_option == 'edit_request_able':
+                login = 'E'
+            elif ban_option == 'release':
+                release = '1'
 
             if ban_type == 'multiple':
                 all_user = re.findall(r'([^\n]+)\n', flask.request.form.get('name', 'test').replace('\r', '') + '\n')
@@ -106,9 +114,12 @@ def give_user_ban(name = None, ban_type = ''):
                         <hr class="main_hr">
                         <input placeholder="''' + load_lang('why') + '''" name="why" type="text">
                         <hr class="main_hr">
-                        <input type="checkbox" name="login"> ''' + load_lang('login_able') + '''
-                        <hr class="main_hr">
-                        <input type="checkbox" name="release"> ''' + load_lang('release') + '''
+                        <select name="ban_option">
+                            <option value="">''' + load_lang('default') + '''</option>
+                            <option value="login_able">''' + load_lang('login_able') + '''</option>
+                            <option value="edit_request_able">''' + load_lang('edit_request_able') + '''</option>
+                            <option value="release">''' + load_lang('release') + '''</option>
+                        </select>
                         <hr class="main_hr">
                         <button type="submit">''' + load_lang('save') + '''</button>
                     </form>

+ 13 - 4
route/tool/func.py

@@ -1058,7 +1058,7 @@ def wiki_css(data):
     data_css = ''
     data_css_dark = ''
 
-    data_css_ver = '208'
+    data_css_ver = '209'
     data_css_ver = '.cache_v' + data_css_ver
 
     if 'main_css' in global_wiki_set:
@@ -1822,7 +1822,10 @@ def acl_check(name = '', tool = '', topic_num = '1'):
             name = ''
 
         ip = ip_check()
-        get_ban = ban_check()
+        if tool == 'document_edit_request':
+            get_ban = ban_check(ip, 'edit_request')
+        else:
+            get_ban = ban_check(ip)
         
         if tool == '' and name != '':
             if acl_check(name, 'render') == 1:
@@ -2099,6 +2102,9 @@ def ban_check(ip = None, tool = ''):
                 if tool == 'login':
                     if test_r[0] != 'O':
                         return 1
+                elif tool == 'edit_request':
+                    if test_r[0][0] != 'E':
+                        return 1
                 else:
                     return 1
 
@@ -2108,6 +2114,9 @@ def ban_check(ip = None, tool = ''):
             if tool == 'login':
                 if ban_d[0][0] != 'O':
                     return 1
+            elif tool == 'edit_request':
+                if ban_d[0][0] != 'E':
+                    return 1
             else:
                 return 1
 
@@ -2324,7 +2333,7 @@ def do_edit_filter(data):
                         ip,
                         r_time,
                         'edit filter',
-                        None,
+                        '',
                         'tool:edit filter'
                     )
 
@@ -2462,7 +2471,7 @@ def ban_insert(name, end, why, login, blocker, type_d = None, release = 0):
                 band
             ])
         else:
-            login = 'O' if login != '' else ''
+            login = login if login != '' else ''
             r_time = end if end != '0' else ''
 
             curs.execute(db_change("insert into rb (block, end, today, blocker, why, band, ongoing, login) values (?, ?, ?, ?, ?, ?, '1', ?)"), [

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.5.0-dev31",
+        "r_ver" : "v3.5.0-dev32",
         "c_ver" : "3500376",
         "s_ver" : "3500113"
     }

+ 5 - 3
views/main_css/js/func/insert_user_info.js

@@ -46,9 +46,11 @@ function do_insert_user_info() {
                 }
                 get_data_ban += '<br>';
                 
-                get_data_ban += lang_data['login_able'] + ' : ';
-                if(data['data']['ban']['login_able'] === '1') {
-                    get_data_ban += 'O'; 
+                get_data_ban += lang_data['option'] + ' : ';
+                if(data['data']['ban']['login_able'] === '2') {
+                    get_data_ban += lang_data['edit_request_able']; 
+                } else if(data['data']['ban']['login_able'] === '1') {
+                    get_data_ban += lang_data['login_able']; 
                 } else {
                     get_data_ban += 'X';
                 }