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. # 난잡한 코드 정리 필요
  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. return easy_minify(flask.render_template(skin_check(),
  22. imp = [load_lang('reset_user_ok'), wiki_set(), custom(), other2([0, 0])],
  23. data = b_text + load_lang('id') + ' : ' + d_id + '<br>' + load_lang('password') + ' : ' + pw,
  24. menu = [['user', load_lang('return')]]
  25. ))
  26. else:
  27. return redirect('/pass_find')
  28. else:
  29. ip = ip_check()
  30. if 'c_id' in flask.session and flask.session['c_key'] == flask.request.form.get('key', None):
  31. curs.execute(db_change('select data from other where name = "encode"'))
  32. db_data = curs.fetchall()
  33. if tool == 'check_key':
  34. curs.execute(db_change("select id from user limit 1"))
  35. if not curs.fetchall():
  36. curs.execute(db_change("insert into user (id, pw, acl, date, encode) values (?, ?, 'owner', ?, ?)"), [
  37. flask.session['c_id'],
  38. flask.session['c_pw'],
  39. get_time(),
  40. db_data[0][0]
  41. ])
  42. first = 1
  43. else:
  44. curs.execute(db_change('select data from other where name = "requires_approval"'))
  45. requires_approval = curs.fetchall()
  46. if requires_approval and requires_approval[0][0] == 'on':
  47. application_token = ''.join(random.choice("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") for i in range(60))
  48. curs.execute(db_change(
  49. "insert into user_application (id, pw, date, encode, question, answer, token, ip, ua, email) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
  50. ), [
  51. flask.session['c_id'],
  52. flask.session['c_pw'],
  53. get_time(),
  54. db_data[0][0],
  55. flask.session['c_question'],
  56. flask.session['c_ans'],
  57. application_token,
  58. ip,
  59. flask.request.headers.get('User-Agent'),
  60. flask.session['c_email']
  61. ])
  62. conn.commit()
  63. flask.session.pop('c_id', None)
  64. flask.session.pop('c_pw', None)
  65. flask.session.pop('c_key', None)
  66. flask.session.pop('c_email', None)
  67. flask.session.pop('c_question', None)
  68. flask.session.pop('c_ans', None)
  69. return redirect('/application_submitted')
  70. else:
  71. curs.execute(db_change("insert into user (id, pw, acl, date, encode) values (?, ?, 'user', ?, ?)"), [
  72. flask.session['c_id'],
  73. flask.session['c_pw'],
  74. get_time(),
  75. db_data[0][0]
  76. ])
  77. first = 0
  78. agent = flask.request.headers.get('User-Agent')
  79. curs.execute(db_change("insert into user_set (name, id, data) values ('email', ?, ?)"), [
  80. flask.session['c_id'],
  81. flask.session['c_email']
  82. ])
  83. curs.execute(db_change("insert into ua_d (name, ip, ua, today, sub) values (?, ?, ?, ?, '')"), [
  84. flask.session['c_id'],
  85. ip,
  86. agent,
  87. get_time()
  88. ])
  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. ))