login_find_email_check.py 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. from .tool.func import *
  2. # 개편 필요
  3. async def login_find_email_check(tool):
  4. with get_db_connect() as conn:
  5. curs = conn.cursor()
  6. if flask.request.method == 'POST' or ('c_key' in flask.session and flask.session['c_key'] == 'email_pass'):
  7. re_set_list = ['c_id', 'c_pw', 'c_ans', 'c_que', 'c_key', 'c_type', 'c_email']
  8. ip = ip_check()
  9. input_key = flask.request.form.get('key', '')
  10. user_agent = flask.request.headers.get('User-Agent', '')
  11. if 'c_type' in flask.session and flask.session['c_type'] == 'pass_find' and flask.session['c_key'] == input_key:
  12. user_id = flask.session['c_id']
  13. user_pw = flask.session['c_key']
  14. curs.execute(db_change("update user_set set data = ? where name = 'pw' and id = ?"), [pw_encode(conn, user_pw), user_id])
  15. curs.execute(db_change('select data from user_set where name = "2fa" and id = ?'), [user_id])
  16. if curs.fetchall():
  17. curs.execute(db_change("update user_set set data = '' where name = '2fa' and id = ?"), [user_id])
  18. for i in re_set_list:
  19. flask.session.pop(i, None)
  20. curs.execute(db_change('select data from other where name = "reset_user_text"'))
  21. sql_d = curs.fetchall()
  22. b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
  23. return easy_minify(flask.render_template(await skin_check(),
  24. imp = [await get_lang('reset_user_ok'), await wiki_set(), await wiki_custom(), wiki_css([0, 0])],
  25. data = '' + \
  26. b_text + \
  27. await get_lang('id') + ' : ' + user_id + \
  28. '<hr class="main_hr">' + \
  29. await get_lang('password') + ' : ' + user_pw + \
  30. '',
  31. menu = [['user', await get_lang('return')]]
  32. ))
  33. elif 'c_type' in flask.session and (flask.session['c_key'] == input_key or flask.session['c_key'] == 'email_pass'):
  34. curs.execute(db_change('select data from other where name = "encode"'))
  35. db_data = curs.fetchall()
  36. if flask.session['c_type'] == 'register':
  37. if flask.session['c_key'] == 'email_pass':
  38. flask.session['c_email'] = ''
  39. curs.execute(db_change("select id from user_set limit 1"))
  40. first = 1 if not curs.fetchall() else 0
  41. curs.execute(db_change("select id from user_set where id = ?"), [flask.session['c_id']])
  42. if curs.fetchall():
  43. for i in re_set_list:
  44. flask.session.pop(i, None)
  45. return await re_error(conn, 8)
  46. curs.execute(db_change("select id from user_set where id = ? and name = 'application'"), [flask.session['c_id']])
  47. if curs.fetchall():
  48. for i in re_set_list:
  49. flask.session.pop(i, None)
  50. return await re_error(conn, 8)
  51. curs.execute(db_change('select data from other where name = "requires_approval"'))
  52. requires_approval = curs.fetchall()
  53. if requires_approval and requires_approval[0][0] == 'on':
  54. user_app_data = {}
  55. user_app_data['id'] = flask.session['c_id']
  56. user_app_data['pw'] = flask.session['c_pw']
  57. user_app_data['date'] = get_time()
  58. user_app_data['encode'] = db_data[0][0]
  59. user_app_data['question'] = flask.session['c_que']
  60. user_app_data['answer'] = flask.session['c_ans']
  61. user_app_data['ip'] = ip
  62. user_app_data['ua'] = user_agent
  63. user_app_data['email'] = flask.session['c_email']
  64. curs.execute(db_change("insert into user_set (id, name, data) values (?, ?, ?)"), [flask.session['c_id'], 'application', json_dumps(user_app_data)])
  65. for i in re_set_list:
  66. flask.session.pop(i, None)
  67. return redirect(conn, '/application_submitted')
  68. else:
  69. if first == 0:
  70. user_auth = 'user'
  71. else:
  72. user_auth = 'owner'
  73. curs.execute(db_change("insert into user_set (id, name, data) values (?, 'pw', ?)"), [flask.session['c_id'], flask.session['c_pw']])
  74. curs.execute(db_change("insert into user_set (id, name, data) values (?, 'acl', ?)"), [flask.session['c_id'], user_auth])
  75. curs.execute(db_change("insert into user_set (id, name, data) values (?, 'date', ?)"), [flask.session['c_id'], get_time()])
  76. curs.execute(db_change("insert into user_set (id, name, data) values (?, 'encode', ?)"), [flask.session['c_id'], db_data[0][0]])
  77. curs.execute(db_change("insert into user_set (name, id, data) values ('email', ?, ?)"), [flask.session['c_id'], flask.session['c_email']])
  78. ua_plus(conn, flask.session['c_id'], ip, user_agent, get_time())
  79. flask.session['id'] = flask.session['c_id']
  80. flask.session['head'] = ''
  81. else:
  82. curs.execute(db_change('delete from user_set where name = "email" and id = ?'), [ip])
  83. curs.execute(db_change('insert into user_set (name, id, data) values ("email", ?, ?)'), [ip, flask.session['c_email']])
  84. first = 0
  85. for i in re_set_list:
  86. flask.session.pop(i, None)
  87. return redirect(conn, '/change') if first == 0 else redirect(conn, '/setting')
  88. else:
  89. for i in re_set_list:
  90. flask.session.pop(i, None)
  91. return redirect(conn, '/user')
  92. else:
  93. curs.execute(db_change('select data from other where name = "check_key_text"'))
  94. sql_d = curs.fetchall()
  95. b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
  96. return easy_minify(flask.render_template(await skin_check(),
  97. imp = [await get_lang('check_key'), await wiki_set(), await wiki_custom(), wiki_css([0, 0])],
  98. data = '''
  99. <form method="post">
  100. ''' + b_text + '''
  101. <input placeholder="''' + await get_lang('key') + '''" name="key" type="password">
  102. <hr class="main_hr">
  103. <button type="submit">''' + await get_lang('save') + '''</button>
  104. </form>
  105. ''',
  106. menu = [['user', await get_lang('return')]]
  107. ))