login_check_key.py 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. from .tool.func import *
  2. def login_check_key_2(conn, tool):
  3. curs = conn.cursor()
  4. if flask.request.method == 'POST':
  5. if tool == 'check_pass_key':
  6. if 'c_id' in flask.session and flask.session['c_key'] == flask.request.form.get('key', None):
  7. hashed = pw_encode(flask.session['c_key'])
  8. curs.execute(db_change("update user set pw = ? where id = ?"), [hashed, flask.session['c_id']])
  9. conn.commit()
  10. d_id = flask.session['c_id']
  11. pw = flask.session['c_key']
  12. flask.session.pop('c_id', None)
  13. flask.session.pop('c_key', None)
  14. curs.execute(db_change('select data from other where name = "reset_user_text"'))
  15. sql_d = curs.fetchall()
  16. if sql_d and sql_d[0][0] != '':
  17. b_text = sql_d[0][0] + '<hr class=\"main_hr\">'
  18. else:
  19. b_text = ''
  20. return easy_minify(flask.render_template(skin_check(),
  21. imp = [load_lang('reset_user_ok'), wiki_set(), custom(), other2([0, 0])],
  22. data = b_text + load_lang('id') + ' : ' + d_id + '<br>' + load_lang('password') + ' : ' + pw,
  23. menu = [['user', load_lang('return')]]
  24. ))
  25. else:
  26. return redirect('/pass_find')
  27. else:
  28. ip = ip_check()
  29. if 'c_id' in flask.session and flask.session['c_key'] == flask.request.form.get('key', None):
  30. curs.execute(db_change('select data from other where name = "encode"'))
  31. db_data = curs.fetchall()
  32. if tool == 'check_key':
  33. curs.execute(db_change("select id from user limit 1"))
  34. if not curs.fetchall():
  35. curs.execute(db_change("insert into user (id, pw, acl, date, encode) values (?, ?, 'owner', ?, ?)"), [
  36. flask.session['c_id'],
  37. flask.session['c_pw'],
  38. get_time(),
  39. db_data[0][0]
  40. ])
  41. first = 1
  42. else:
  43. curs.execute(db_change('select data from other where name = "requires_approval"'))
  44. requires_approval = curs.fetchall()
  45. if requires_approval and requires_approval[0][0] == 'on':
  46. application_token = ''.join(random.choice("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") for i in range(60))
  47. curs.execute(db_change(
  48. "insert into user_application (id, pw, date, encode, question, answer, token, ip, ua, email) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
  49. ), [
  50. flask.session['c_id'],
  51. flask.session['c_pw'],
  52. get_time(),
  53. db_data[0][0],
  54. flask.session['c_question'],
  55. flask.session['c_ans'],
  56. application_token,
  57. ip,
  58. flask.request.headers.get('User-Agent'),
  59. flask.session['c_email']
  60. ])
  61. conn.commit()
  62. flask.session.pop('c_id', None)
  63. flask.session.pop('c_pw', None)
  64. flask.session.pop('c_key', None)
  65. flask.session.pop('c_email', None)
  66. flask.session.pop('c_question', None)
  67. flask.session.pop('c_ans', None)
  68. return redirect('/application_submitted')
  69. else:
  70. curs.execute(db_change("insert into user (id, pw, acl, date, encode) values (?, ?, 'user', ?, ?)"), [
  71. flask.session['c_id'],
  72. flask.session['c_pw'],
  73. get_time(),
  74. db_data[0][0]
  75. ])
  76. first = 0
  77. agent = flask.request.headers.get('User-Agent')
  78. curs.execute(db_change("insert into user_set (name, id, data) values ('email', ?, ?)"), [
  79. flask.session['c_id'],
  80. flask.session['c_email']
  81. ])
  82. curs.execute(db_change("insert into ua_d (name, ip, ua, today, sub) values (?, ?, ?, ?, '')"), [
  83. flask.session['c_id'],
  84. ip,
  85. agent,
  86. get_time()
  87. ])
  88. flask.session['state'] = 1
  89. flask.session['id'] = flask.session['c_id']
  90. flask.session['head'] = ''
  91. conn.commit()
  92. else:
  93. curs.execute(db_change('delete from user_set where name = "email" and id = ?'), [ip])
  94. curs.execute(db_change('insert into user_set (name, id, data) values ("email", ?, ?)'), [ip, flask.session['c_email']])
  95. first = 0
  96. flask.session.pop('c_id', None)
  97. flask.session.pop('c_pw', None)
  98. flask.session.pop('c_key', None)
  99. flask.session.pop('c_email', None)
  100. if first == 0:
  101. return redirect('/change')
  102. else:
  103. return redirect('/setting')
  104. else:
  105. flask.session.pop('c_id', None)
  106. flask.session.pop('c_pw', None)
  107. flask.session.pop('c_key', None)
  108. flask.session.pop('c_email', None)
  109. return redirect('/user')
  110. else:
  111. curs.execute(db_change('select data from other where name = "check_key_text"'))
  112. sql_d = curs.fetchall()
  113. if sql_d and sql_d[0][0] != '':
  114. b_text = sql_d[0][0] + '<hr class=\"main_hr\">'
  115. else:
  116. b_text = ''
  117. return easy_minify(flask.render_template(skin_check(),
  118. imp = [load_lang('check_key'), wiki_set(), custom(), other2([0, 0])],
  119. data = '''
  120. <form method="post">
  121. ''' + b_text + '''
  122. <input placeholder="''' + load_lang('key') + '''" name="key" type="text">
  123. <hr class=\"main_hr\">
  124. <button type="submit">''' + load_lang('save') + '''</button>
  125. </form>
  126. ''',
  127. menu = [['user', load_lang('return')]]
  128. ))