2
0

give_acl.py 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. from .tool.func import *
  2. def give_acl_2(conn, name):
  3. curs = conn.cursor()
  4. check_ok = ''
  5. ip = ip_check()
  6. if flask.request.method == 'POST':
  7. check_data = 'acl (' + name + ')'
  8. else:
  9. check_data = None
  10. user_data = re.search(r'^user:(.+)$', name)
  11. if user_data:
  12. if check_data and ip_or_user(ip) != 0:
  13. return redirect('/login')
  14. if user_data.group(1) != ip_check():
  15. if admin_check(5) != 1:
  16. if check_data:
  17. return re_error('/error/3')
  18. else:
  19. check_ok = 'disabled'
  20. else:
  21. if admin_check(5) != 1:
  22. if check_data:
  23. return re_error('/error/3')
  24. else:
  25. check_ok = 'disabled'
  26. if flask.request.method == 'POST':
  27. curs.execute(db_change("select title from acl where title = ?"), [name])
  28. if curs.fetchall():
  29. curs.execute(db_change("update acl set decu = ? where title = ?"), [flask.request.form.get('decu', ''), name])
  30. curs.execute(db_change("update acl set dis = ? where title = ?"), [flask.request.form.get('dis', ''), name])
  31. curs.execute(db_change("update acl set why = ? where title = ?"), [flask.request.form.get('why', ''), name])
  32. curs.execute(db_change("update acl set view = ? where title = ?"), [flask.request.form.get('view', ''), name])
  33. else:
  34. curs.execute(db_change("insert into acl (title, decu, dis, why, view) values (?, ?, ?, ?, ?)"), [
  35. name,
  36. flask.request.form.get('decu', ''),
  37. flask.request.form.get('dis', ''),
  38. flask.request.form.get('why', ''),
  39. flask.request.form.get('view', '')
  40. ])
  41. curs.execute(db_change("select title from acl where title = ? and decu = '' and dis = '' and view = ''"), [name])
  42. if curs.fetchall():
  43. curs.execute(db_change("delete from acl where title = ?"), [name])
  44. all_d = ''
  45. for i in ['decu', 'dis', 'view']:
  46. if flask.request.form.get(i, '') == '':
  47. all_d += 'normal'
  48. if i != 'view':
  49. all_d += ' | '
  50. else:
  51. all_d += flask.request.form.get(i, '')
  52. if i != 'view':
  53. all_d += ' | '
  54. admin_check(5, check_data + ' (' + all_d + ')')
  55. conn.commit()
  56. return redirect('/acl/' + url_pas(name))
  57. else:
  58. data = '' + \
  59. '<h2>' + load_lang('document_acl') + '</h2>' + \
  60. '<hr class="main_hr">' + \
  61. '<select name="decu" ' + check_ok + '>' + \
  62. ''
  63. if re.search(r'^user:', name):
  64. acl_list = get_acl_list('user')
  65. else:
  66. acl_list = get_acl_list()
  67. curs.execute(db_change("select decu from acl where title = ?"), [name])
  68. acl_data = curs.fetchall()
  69. for data_list in acl_list:
  70. if acl_data and acl_data[0][0] == data_list:
  71. check = 'selected="selected"'
  72. else:
  73. check = ''
  74. data += '<option value="' + data_list + '" ' + check + '>' + (data_list if data_list != '' else 'normal') + '</option>'
  75. data += '</select>'
  76. if not re.search(r'^user:', name):
  77. data += '' + \
  78. '<hr class="main_hr">' + \
  79. '<h2>' + load_lang('discussion_acl') + '</h2>' + \
  80. '<hr class="main_hr">' + \
  81. '<select name="dis" ' + check_ok + '>' + \
  82. ''
  83. curs.execute(db_change("select dis, why, view from acl where title = ?"), [name])
  84. acl_data = curs.fetchall()
  85. for data_list in acl_list:
  86. if acl_data and acl_data[0][0] == data_list:
  87. check = 'selected="selected"'
  88. else:
  89. check = ''
  90. data += '<option value="' + data_list + '" ' + check + '>' + (data_list if data_list != '' else 'normal') + '</option>'
  91. data += '</select>'
  92. data += '' + \
  93. '<hr class="main_hr">' + \
  94. '<h2>' + load_lang('view_acl') + '</h2>' + \
  95. '<hr class="main_hr">' + \
  96. '<select name="view" ' + check_ok + '>' + \
  97. ''
  98. for data_list in acl_list:
  99. if acl_data and acl_data[0][2] == data_list:
  100. check = 'selected="selected"'
  101. else:
  102. check = ''
  103. data += '<option value="' + data_list + '" ' + check + '>' + (data_list if data_list != '' else 'normal') + '</option>'
  104. data += '''
  105. </select>
  106. <hr class="main_hr">
  107. <h2 id="exp">''' + load_lang('explanation') + '''</h2>
  108. <ul>
  109. <li>normal : ''' + load_lang('unset') + '''</li>
  110. <li>admin : ''' + load_lang('admin_acl') + '''</li>
  111. <li>user : ''' + load_lang('member_acl') + '''</li>
  112. <li>50_edit : ''' + load_lang('50_edit_acl') + '''</li>
  113. <li>all : ''' + load_lang('all_acl') + '''</li>
  114. <li>email : ''' + load_lang('email_acl') + '''</li>
  115. <li>owner : ''' + load_lang('owner_acl') + '''</li>
  116. <li>ban : ''' + load_lang('ban_acl') + '''</li>
  117. <li>before : ''' + load_lang('before_acl') + '''</li>
  118. <li>30_day : ''' + load_lang('30_day_acl') + '''</li>
  119. <li>ban_admin : ''' + load_lang('ban_admin_acl') + '''</li>
  120. </ul>
  121. '''
  122. if acl_data:
  123. data += '' + \
  124. '<hr class="main_hr">' + \
  125. '<input value="' + html.escape(acl_data[0][1]) + '" placeholder="' + load_lang('why') + '" name="why" type="text" ' + check_ok + '>' + \
  126. ''
  127. else:
  128. data += '' + \
  129. '<hr class="main_hr">' + \
  130. '<input placeholder="' + load_lang('why') + '" name="why" type="text" ' + check_ok + '>' + \
  131. ''
  132. return easy_minify(flask.render_template(skin_check(),
  133. imp = [name, wiki_set(), custom(), other2(['(' + load_lang('acl') + ')', 0])],
  134. data = '''
  135. <form method="post">
  136. <a href="/setting/8">(''' + load_lang('main_acl_setting') + ''')</a>
  137. ''' + data + '''
  138. <hr class="main_hr">
  139. <button type="submit" ''' + check_ok + '''>''' + load_lang('save') + '''</button>
  140. </form>
  141. ''',
  142. menu = [['w/' + url_pas(name), load_lang('document')], ['manager', load_lang('admin')], ['admin_log?search=' + url_pas('acl (' + name + ')'), load_lang('acl_record')]]
  143. ))