user_setting_pw.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. from .tool.func import *
  2. async def user_setting_pw():
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. if (await ban_check())[0] == 1:
  6. return await re_error(conn, 0)
  7. ip = ip_check()
  8. if ip_or_user(ip) != 0:
  9. return redirect(conn, '/login')
  10. if flask.request.method == 'POST':
  11. user_pw_now = flask.request.form.get('password_now', '')
  12. user_pw = flask.request.form.get('password_new', '')
  13. user_repeat = flask.request.form.get('password_new_repeat', '')
  14. # PW 검증
  15. if user_pw == '':
  16. return await re_error(conn, 27)
  17. if user_pw != user_repeat:
  18. return await re_error(conn, 20)
  19. # PW 길이 제한
  20. curs.execute(db_change("select data from other where name = 'password_min_length'"))
  21. db_data = curs.fetchall()
  22. if db_data and db_data[0][0] != '':
  23. password_min_length = int(number_check(db_data[0][0]))
  24. if password_min_length > len(user_pw):
  25. return await re_error(conn, 40)
  26. curs.execute(db_change("select data from user_set where id = ? and name = 'pw'"), [ip])
  27. db_data = curs.fetchall()
  28. if not db_data:
  29. return await re_error(conn, 2)
  30. else:
  31. db_user_pw = db_data[0][0]
  32. curs.execute(db_change("select data from user_set where id = ? and name = 'encode'"), [ip])
  33. db_data = curs.fetchall()
  34. if not db_data:
  35. return await re_error(conn, 2)
  36. else:
  37. db_user_encode = db_data[0][0]
  38. if pw_check(conn, user_pw_now, db_user_pw, db_user_encode, ip) != 1:
  39. return await re_error(conn, 10)
  40. curs.execute(db_change("update user_set set data = ? where id = ? and name = 'pw'"), [pw_encode(conn, user_pw), ip])
  41. return redirect(conn, '/user')
  42. else:
  43. curs.execute(db_change("select data from other where name = 'password_min_length'"))
  44. db_data = curs.fetchall()
  45. if db_data and db_data[0][0] != '':
  46. password_min_length = ' (' + await get_lang('password_min_length') + ' : ' + db_data[0][0] + ')'
  47. else:
  48. password_min_length = ''
  49. return easy_minify(flask.render_template(await skin_check(),
  50. imp = [await get_lang('password_change'), await wiki_set(), await wiki_custom(), wiki_css([0, 0])],
  51. data = '''
  52. <form method="post">
  53. <input placeholder="''' + await get_lang('now_password') + '''" name="password_now" type="password">
  54. <hr class="main_hr">
  55. <input placeholder="''' + await get_lang('new_password') + password_min_length + '''" name="password_new" type="password">
  56. <hr class="main_hr">
  57. <input placeholder="''' + await get_lang('password_confirm') + '''" name="password_new_repeat" type="password">
  58. <hr class="main_hr">
  59. <button type="submit">''' + await get_lang('save') + '''</button>
  60. ''' + await http_warning() + '''
  61. </form>
  62. ''',
  63. menu = [['change', await get_lang('return')]]
  64. ))