Prompt for password change when using 'jrnl --encrypt' on already encrypted journal (#1477)

* Create new password if journal already encrypted.
* Add test for encrypting already encrypted journal.
This commit is contained in:
Jonathan van der Steege 2022-05-21 23:11:55 +02:00 committed by GitHub
parent 7771afc1a7
commit 663f151974
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 5 deletions

View file

@ -17,6 +17,7 @@ from jrnl.exception import JrnlException
from jrnl.messages import Message from jrnl.messages import Message
from jrnl.messages import MsgText from jrnl.messages import MsgText
from jrnl.messages import MsgType from jrnl.messages import MsgType
from jrnl.prompt import create_password
def preconfig_diagnostic(_): def preconfig_diagnostic(_):
@ -84,9 +85,14 @@ def postconfig_encrypt(args, config, original_config, **kwargs):
) )
) )
journal.config["encrypt"] = True
new_journal = EncryptedJournal.from_journal(journal) new_journal = EncryptedJournal.from_journal(journal)
# If journal is encrypted, create new password
if journal.config["encrypt"] is True:
print(f"Journal {journal.name} is already encrypted. Create a new password.")
new_journal.password = create_password(new_journal.name)
journal.config["encrypt"] = True
new_journal.write(args.filename) new_journal.write(args.filename)
print( print(

View file

@ -24,10 +24,11 @@ Feature: Encrypting and decrypting journals
2013-06-10 15:40 Life is good. 2013-06-10 15:40 Life is good.
@todo
Scenario: Trying to encrypt an already encrypted journal Scenario: Trying to encrypt an already encrypted journal
# This should warn the user that the journal is already encrypted Given we use the config "encrypted.yaml"
When we run "jrnl --encrypt" and enter "bad doggie no biscuit"
Then the output should contain "already encrypted. Create a new password."
Then we should be prompted for a password
Scenario Outline: Encrypting a journal Scenario Outline: Encrypting a journal
Given we use the config "simple.yaml" Given we use the config "simple.yaml"