2
0

login_find_email.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. from .tool.func import *
  2. # 개편 필요
  3. async def login_find_email(tool):
  4. with get_db_connect() as conn:
  5. curs = conn.cursor()
  6. if flask.request.method == 'POST':
  7. re_set_list = ['c_id', 'c_pw', 'c_ans', 'c_que', 'c_key', 'c_type']
  8. if tool == 'email_change':
  9. flask.session['c_key'] = load_random_key(32)
  10. flask.session['c_id'] = ip_check()
  11. flask.session['c_type'] = 'email_change'
  12. elif tool == 'pass_find':
  13. user_id = flask.request.form.get('id', '')
  14. user_email = flask.request.form.get('email', '')
  15. flask.session['c_key'] = load_random_key(32)
  16. flask.session['c_id'] = user_id
  17. flask.session['c_type'] = 'pass_find'
  18. else:
  19. if not 'c_type' in flask.session:
  20. return redirect(conn, '/register')
  21. if tool != 'pass_find':
  22. user_email = flask.request.form.get('email', '')
  23. email_data = re.search(r'@([^@]+)$', user_email)
  24. if email_data:
  25. curs.execute(db_change("select html from html_filter where html = ? and kind = 'email'"), [email_data.group(1)])
  26. if not curs.fetchall():
  27. for i in re_set_list:
  28. flask.session.pop(i, None)
  29. return redirect(conn, '/filter/email_filter')
  30. else:
  31. for i in re_set_list:
  32. flask.session.pop(i, None)
  33. return await re_error(conn, 36)
  34. curs.execute(db_change('select data from other where name = "email_title"'))
  35. sql_d = curs.fetchall()
  36. t_text = html.escape(sql_d[0][0]) if sql_d and sql_d[0][0] != '' else ((await wiki_set())[0] + ' key')
  37. curs.execute(db_change('select data from other where name = "email_text"'))
  38. sql_d = curs.fetchall()
  39. i_text = (html.escape(sql_d[0][0]) + '\n\nKey : ' + flask.session['c_key']) if sql_d and sql_d[0][0] != '' else ('Key : ' + flask.session['c_key'])
  40. if tool == 'pass_find':
  41. curs.execute(db_change("select id from user_set where id = ? and name = 'email' and data = ?"), [user_id, user_email])
  42. if not curs.fetchall():
  43. return await re_error(conn, 12)
  44. if await send_email(conn, user_email, t_text, i_text) == 0:
  45. return await re_error(conn, 18)
  46. return redirect(conn, '/pass_find/email')
  47. else:
  48. curs.execute(db_change('select id from user_set where name = "email" and data = ?'), [user_email])
  49. if curs.fetchall():
  50. for i in re_set_list:
  51. flask.session.pop(i, None)
  52. return await re_error(conn, 35)
  53. if await send_email(conn, user_email, t_text, i_text) == 0:
  54. for i in re_set_list:
  55. flask.session.pop(i, None)
  56. return await re_error(conn, 18)
  57. flask.session['c_email'] = user_email
  58. return redirect(conn, '/pass_find/email')
  59. else:
  60. if tool == 'pass_find':
  61. curs.execute(db_change('select data from other where name = "password_search_text"'))
  62. sql_d = curs.fetchall()
  63. b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
  64. return await render_template(
  65. await get_lang('password_search'),
  66. b_text + '''
  67. <form method="post">
  68. <input class="__ON_INPUT__" placeholder="''' + await get_lang('id') + '''" name="id" type="text">
  69. <hr class="main_hr">
  70. <input class="__ON_INPUT__" placeholder="''' + await get_lang('email') + '''" name="email" type="text">
  71. <hr class="main_hr">
  72. <button class="__ON_BUTTON__" type="submit">''' + await get_lang('save') + '''</button>
  73. </form>
  74. ''',
  75. '(' + await get_lang('email') + ')',
  76. [['user', await get_lang('return')]]
  77. )
  78. else:
  79. if tool == 'need_email' and not 'c_type' in flask.session:
  80. return redirect(conn, '/register')
  81. curs.execute(db_change('select data from other where name = "email_insert_text"'))
  82. sql_d = curs.fetchall()
  83. b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
  84. return await render_template(
  85. await get_lang('email'),
  86. '''
  87. <a href="/filter/email_filter">(''' + await get_lang('email_filter_list') + ''')</a>
  88. <hr class="main_hr">
  89. ''' + b_text + '''
  90. <form method="post">
  91. <input class="__ON_INPUT__" placeholder="''' + await get_lang('email') + '''" name="email" type="text">
  92. <hr class="main_hr">
  93. <button class="__ON_BUTTON__" type="submit">''' + await get_lang('save') + '''</button>
  94. </form>
  95. ''',
  96. 0,
  97. [['user', await get_lang('return')]]
  98. )