give_auth.py 3.4 KB

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