diff --git a/bazarr/init.py b/bazarr/init.py index d37947de5..fa159f589 100644 --- a/bazarr/init.py +++ b/bazarr/init.py @@ -3,6 +3,8 @@ import os import time import rarfile +import json +import hashlib from cork import Cork from config import settings, configure_captcha_func @@ -88,22 +90,27 @@ if not os.path.exists(os.path.join(args.config_dir, 'config', 'releases.txt')): config_file = os.path.normpath(os.path.join(args.config_dir, 'config', 'config.ini')) -if not os.path.exists(os.path.normpath(os.path.join(args.config_dir, 'config', 'users.json'))): - cork = Cork(os.path.normpath(os.path.join(args.config_dir, 'config')), initialize=True) - - cork._store.roles[''] = 100 - cork._store.save_roles() - - tstamp = str(time.time()) - username = password = '' - cork._store.users[username] = { - 'role': '', - 'hash': cork._hash(username, password), - 'email_addr': username, - 'desc': username, - 'creation_date': tstamp - } - cork._store.save_users() +# Reset form login password for Bazarr after migration from 0.8.x to 0.9. Password will be equal to username. +if settings.auth.type == 'form' and \ + os.path.exists(os.path.normpath(os.path.join(args.config_dir, 'config', 'users.json'))): + username = False + with open(os.path.normpath(os.path.join(args.config_dir, 'config', 'users.json'))) as json_file: + try: + data = json.load(json_file) + username = next(iter(data)) + except: + logging.error('BAZARR is unable to migrate credentials. You should disable login by modifying config.ini ' + 'file and settings [auth]-->type = None') + if username: + settings.auth.username = username + settings.auth.password = hashlib.md5(username.encode('utf-8')).hexdigest() + with open(os.path.join(args.config_dir, 'config', 'config.ini'), 'w+') as handle: + settings.write(handle) + os.remove(os.path.normpath(os.path.join(args.config_dir, 'config', 'users.json'))) + os.remove(os.path.normpath(os.path.join(args.config_dir, 'config', 'roles.json'))) + os.remove(os.path.normpath(os.path.join(args.config_dir, 'config', 'register.json'))) + logging.info('BAZARR your login credentials have been migrated successfully and your password is now equal ' + 'to your username. Please change it as sson as possible in settings.') def init_binaries(): diff --git a/bazarr/main.py b/bazarr/main.py index 5fb588894..14bf4ffbe 100644 --- a/bazarr/main.py +++ b/bazarr/main.py @@ -105,6 +105,9 @@ def login_required(f): @app.route('/login/', methods=["GET", "POST"]) def login_page(): error = '' + password_reset = False + if settings.auth.password == hashlib.md5(settings.auth.username.encode('utf-8')).hexdigest(): + password_reset = True try: if request.method == "POST": if check_credentials(request.form['username'], request.form['password']): @@ -117,7 +120,7 @@ def login_page(): error = "Invalid credentials, try again." gc.collect() - return render_template("login.html", error=error) + return render_template("login.html", error=error, password_reset=password_reset) except Exception as e: # flash(e) diff --git a/views/_main.html b/views/_main.html index 137b387e8..b8723d9a8 100644 --- a/views/_main.html +++ b/views/_main.html @@ -307,6 +307,7 @@ {% endblock tail_js %} {% block tail %} diff --git a/views/login.html b/views/login.html index cdbc7e282..6de112ac2 100644 --- a/views/login.html +++ b/views/login.html @@ -31,6 +31,11 @@
{{ error }}
{% endif %} + {% if password_reset %} +
+
Your password have been reset and is equal to your username. You should change it as soon as possible in settings.
+
+ {% endif %}