login_check_key.py 6.9 KB

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