login_need_email.py 5.0 KB

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