2
0

give_auth.py 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. from .tool.func import *
  2. def give_auth(name):
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. ip = ip_check()
  6. owner_auth = admin_check(conn)
  7. admin_auth = admin_check(conn, 7)
  8. curs.execute(db_change("select data from user_set where id = ? and name = 'acl'"), [name])
  9. user_acl = curs.fetchall()
  10. if not user_acl:
  11. return re_error(conn, '/error/2')
  12. else:
  13. user_acl = user_acl[0][0]
  14. if owner_auth != 1:
  15. curs.execute(db_change('select name from alist where name = ? and acl = "owner"'), [user_acl])
  16. if curs.fetchall():
  17. return re_error(conn, '/error/3')
  18. if ip == name:
  19. return re_error(conn, '/error/3')
  20. if flask.request.method == 'POST':
  21. if admin_check(conn, 7, 'admin (' + name + ')') != 1:
  22. return re_error(conn, '/error/3')
  23. select_data = flask.request.form.get('select', 'X')
  24. if select_data == 'X':
  25. select_data = 'user'
  26. curs.execute(db_change('select name from alist where name = ? and acl = "owner"'), [select_data])
  27. if owner_auth != 1 and curs.fetchall():
  28. return re_error(conn, '/error/3')
  29. curs.execute(db_change("update user_set set data = ? where id = ? and name = 'acl'"), [select_data, name])
  30. curs.execute(db_change('delete from user_set where name = "auth_date" and id = ?'), [name])
  31. time_limit = flask.request.form.get('date', '')
  32. if re.search(r'^[0-9]{4}-[0-9]{2}-[0-9]{2}$', time_limit):
  33. curs.execute(db_change("insert into user_set (id, name, data) values (?, 'auth_date', ?)"), [name, time_limit])
  34. else:
  35. time_limit = ''
  36. add_alarm(conn, name, ip, 'Auth change to ' + select_data + (' (' + time_limit + ')' if time_limit != '' else ''))
  37. return redirect(conn, '/auth/give/' + url_pas(name))
  38. else:
  39. if admin_auth != 1:
  40. return re_error(conn, '/error/3')
  41. div = '<option value="X">' + get_lang(conn, 'normal') + '</option>'
  42. div += '<option value="ban">' + get_lang(conn, 'ban') + '</option>'
  43. curs.execute(db_change('select distinct name from alist order by name asc'))
  44. for data in curs.fetchall():
  45. if user_acl == data[0]:
  46. div = '<option value="' + data[0] + '">' + data[0] + '</option>' + div
  47. else:
  48. div += '<option value="' + data[0] + '">' + data[0] + '</option>'
  49. date_value = ''
  50. curs.execute(db_change('select data from user_set where name = "auth_date" and id = ?'), [name])
  51. db_data = curs.fetchall()
  52. if db_data:
  53. date_value = db_data[0][0]
  54. return easy_minify(conn, flask.render_template(skin_check(conn),
  55. imp = [name, wiki_set(conn), wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'authorize') + ')', 0])],
  56. data = '''
  57. <form method="post">
  58. <div id="opennamu_get_user_info">''' + html.escape(name) + '''</div>
  59. <hr class="main_hr">
  60. <select name="select">''' + div + '''</select>
  61. <hr class="main_hr">
  62. <input type="date" value="''' + date_value + '''" name="date" pattern="\\d{4}-\\d{2}-\\d{2}">
  63. <hr class="main_hr">
  64. <button type="submit">''' + get_lang(conn, 'save') + '''</button>
  65. </form>
  66. ''',
  67. menu = [['manager', get_lang(conn, 'return')]]
  68. ))