diff --git a/docs/docs/documentation/getting-started/faq.md b/docs/docs/documentation/getting-started/faq.md index cbe6a0e62df5..1b78610804b6 100644 --- a/docs/docs/documentation/getting-started/faq.md +++ b/docs/docs/documentation/getting-started/faq.md @@ -58,3 +58,13 @@ docker exec -it mealie-next bash python /app/mealie/scripts/reset_locked_users.py ``` + +## How can I change my password + +You can change your password by going to the user profile page and clicking the "Change Password" button. Alternatively you can use the following script to change your password via the CLI if you are locked out of your account. + +```shell +docker exec -it mealie-next bash + +python /app/mealie/scripts/change_password.py +``` diff --git a/mealie/scripts/change_password.py b/mealie/scripts/change_password.py new file mode 100644 index 000000000000..2725d0db4bac --- /dev/null +++ b/mealie/scripts/change_password.py @@ -0,0 +1,40 @@ +from getpass import getpass + +from mealie.core import root_logger +from mealie.core.security.security import hash_password +from mealie.db.db_setup import session_context +from mealie.repos.repository_factory import AllRepositories + + +def main(): + confirmed = input("Please enter the email of the user you want to reset: ") + + logger = root_logger.get_logger() + + with session_context() as session: + repos = AllRepositories(session) + + user = repos.users.get_one(confirmed, "email") + + if not user: + logger.error("no user found") + exit(1) + + logger.info(f"changing password for {user.username}") + + pw = getpass("Please enter the new password: ") + pw2 = getpass("Please enter the new password again: ") + + if pw != pw2: + logger.error("passwords do not match") + + hashed_password = hash_password(pw) + repos.users.update_password(user.id, hashed_password) + + logger.info("password change successful") + input("press enter to exit ") + exit(0) + + +if __name__ == "__main__": + main()