diff --git a/packages/desktop-client/src/components/modals/CreateEncryptionKey.js b/packages/desktop-client/src/components/modals/CreateEncryptionKey.js index 5f76b0a998c1019a633db6d64106901e076f7edf..a13d99f3a91c23762a4329c15c1ee13a23d8a67e 100644 --- a/packages/desktop-client/src/components/modals/CreateEncryptionKey.js +++ b/packages/desktop-client/src/components/modals/CreateEncryptionKey.js @@ -20,7 +20,6 @@ import { colors } from 'loot-design/src/style'; export default function CreateEncryptionKey({ modalProps, actions, - budgetId, options = {} }) { let [password, setPassword] = useState(''); @@ -79,8 +78,8 @@ export default function CreateEncryptionKey({ <li> <strong>Important:</strong> if you forget this password{' '} <em>and</em> you don't have any local copies of your data, - you will lose access to all your data. We cannot decrypt - your data. + you will lose access to all your data. The data cannot be + decrypted without the password. </li> <li> This key only applies to this file. You will need to @@ -91,6 +90,11 @@ export default function CreateEncryptionKey({ will need to reset them. Actual will automatically take you through this process. </li> + <li> + It is recommended for the encryption password to be + different than the log-in password in order to better + protect your data. + </li> </ul> </P> </> diff --git a/packages/desktop-client/src/components/settings/Encryption.js b/packages/desktop-client/src/components/settings/Encryption.js index 3aa64b9024c6c3de93506533ed0f2efe21b457c5..58f9ffc2dd27462868d59b849dbbd5bcf4ef7082 100644 --- a/packages/desktop-client/src/components/settings/Encryption.js +++ b/packages/desktop-client/src/components/settings/Encryption.js @@ -3,9 +3,12 @@ import React from 'react'; import { Text, Button } from 'loot-design/src/components/common'; import { colors } from 'loot-design/src/style'; +import { useServerURL } from '../../hooks/useServerURL'; import { ButtonSetting } from './UI'; export default function EncryptionSettings({ prefs, pushModal }) { + const serverURL = useServerURL(); + function onChangeKey() { pushModal('create-encryption-key', { recreate: true }); } @@ -19,30 +22,53 @@ export default function EncryptionSettings({ prefs, pushModal }) { End-to-end Encryption is turned on. </Text>{' '} Your data is encrypted with a key that only you have before sending it - out to the cloud . Local data remains unencrypted so if you forget your - password you can re-encrypt it. + it out to the cloud. Local data remains unencrypted so if you forget + your password you can re-encrypt it.{' '} + <a + href="https://actualbudget.github.io/docs/Getting-Started/sync/#encryption" + target="_blank" + rel="noopener noreferrer" + > + Learn more… + </a> </Text> </ButtonSetting> - ) : ( + ) : serverURL ? ( <ButtonSetting button={ - <Button - onClick={() => { - alert( - 'End-to-end encryption is not supported on the self-hosted service yet' - ); - // pushModal('create-encryption-key'); - }} - > + <Button onClick={() => pushModal('create-encryption-key')}> Enable encryption… </Button> } > <Text> - <strong>End-to-end encryption</strong> is not enabled. Any data on our - servers is still stored safely and securely, but it's not end-to-end - encrypted which means we have the ability to read it (but we won't). If - you want, you can use a password to encrypt your data on our servers. + <strong>End-to-end encryption</strong> is not enabled. Any data on the + server is still protected by the server password, but it's not + end-to-end encrypted which means the server owners have the ability to + read it. If you want, you can use an additional password to encrypt your + data on the server.{' '} + <a + href="https://actualbudget.github.io/docs/Getting-Started/sync/#encryption" + target="_blank" + rel="noopener noreferrer" + > + Learn more… + </a> + </Text> + </ButtonSetting> + ) : ( + <ButtonSetting button={<Button disabled>Enable encryption…</Button>}> + <Text> + <strong>End-to-end encryption</strong> is not available when running + without a server. Budget files are always kept unencrypted locally, and + encryption is only applied when sending data to a server.{' '} + <a + href="https://actualbudget.github.io/docs/Getting-Started/sync/#encryption" + target="_blank" + rel="noopener noreferrer" + > + Learn more… + </a> </Text> </ButtonSetting> );