2
0

give_user_fix.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. from .tool.func import *
  2. async def give_user_fix(user_name = ''):
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. curs.execute(db_change("select data from user_set where id = ? and name = 'pw'"), [user_name])
  6. if not curs.fetchall():
  7. return await re_error(conn, 2)
  8. if await acl_check('', 'owner_auth', '', '') == 1:
  9. return await re_error(conn, 3)
  10. if flask.request.method == 'POST':
  11. select = flask.request.form.get('select', '')
  12. await acl_check(tool = 'owner_auth', memo = 'user_fix (' + user_name + ') (' + select + ')')
  13. if select == 'password_change':
  14. password = flask.request.form.get('new_password', '')
  15. check_password = flask.request.form.get('password_check', '')
  16. if password == check_password:
  17. hashed = pw_encode(conn, password)
  18. curs.execute(db_change("update user_set set data = ? where id = ? and name = 'pw'"), [
  19. hashed,
  20. user_name
  21. ])
  22. else:
  23. return await re_error(conn, 20)
  24. elif select == '2fa_password_change':
  25. password = flask.request.form.get('new_password', '')
  26. check_password = flask.request.form.get('password_check', '')
  27. if password == check_password:
  28. hashed = pw_encode(conn, password)
  29. curs.execute(db_change('select data from user_set where name = "2fa_pw" and id = ?'), [user_name])
  30. if curs.fetchall():
  31. curs.execute(db_change("update user_set set data = ? where name = '2fa_pw' and id = ?"), [hashed, user_name])
  32. else:
  33. curs.execute(db_change("insert into user_set (name, id, data) values ('2fa_pw', ?, ?)"), [user_name, hashed])
  34. else:
  35. return await re_error(conn, 20)
  36. elif select == '2fa_off':
  37. curs.execute(db_change('select data from user_set where name = "2fa" and id = ?'), [user_name])
  38. if curs.fetchall():
  39. curs.execute(db_change("update user_set set data = '' where name = '2fa' and id = ?"), [user_name])
  40. return redirect(conn, '/user/' + url_pas(user_name))
  41. else:
  42. return await render_template(
  43. await get_lang('user_fix'),
  44. '''
  45. <form method="post">
  46. <div id="opennamu_get_user_info">''' + html.escape(user_name) + '''</div>
  47. <hr class="main_hr">
  48. <a href="/change/user_name/''' + url_pas(user_name) + '''">(''' + await get_lang('change_user_name') + ''')</a>
  49. <hr class="main_hr">
  50. <span class="__ON_SELECT_DIV__"><select class="__ON_SELECT__" name="select">
  51. <option value="password_change">''' + await get_lang('password_change') + '''</option>
  52. <option value="2fa_password_change">''' + await get_lang('2fa_password_change') + '''</option>
  53. <option value="2fa_off">''' + await get_lang('2fa_off') + '''</option>
  54. </select></span>
  55. <hr class="main_hr">
  56. ''' + await get_lang('password_change') + ''' | ''' + await get_lang('2fa_password_change') + '''
  57. <hr class="main_hr">
  58. <input class="__ON_INPUT__" placeholder="''' + await get_lang('new_password') + '''" name="new_password" type="password">
  59. <hr class="main_hr">
  60. <input class="__ON_INPUT__" placeholder="''' + await get_lang('password_confirm') + '''" name="password_check" type="password">
  61. <hr class="main_hr">
  62. <button class="__ON_BUTTON__" type="submit">''' + await get_lang('go') + '''</button>
  63. </form>
  64. ''',
  65. 0,
  66. [['manager', await get_lang('return')]]
  67. )