mirror of https://github.com/keeweb/keeweb.git
Added a setting to store key files path only
This commit is contained in:
parent
3e01a8eaa2
commit
c2d4037c24
|
@ -335,6 +335,9 @@
|
|||
"setGenFunction": "Function",
|
||||
"setGenAutoSync": "Automatically save and sync",
|
||||
"setGenRememberKeyFiles": "Remember key files",
|
||||
"setGenNoRememberKeyFiles": "Don't remember",
|
||||
"setGenRememberKeyFilesData": "Store in the internal app storage",
|
||||
"setGenRememberKeyFilesPath": "Remember only path to key files",
|
||||
"setGenLockInactive": "Auto-lock if the app is inactive",
|
||||
"setGenNoAutoLock": "Don't auto-lock",
|
||||
"setGenLockMinutes": "In {} minutes",
|
||||
|
|
|
@ -437,9 +437,23 @@ var AppModel = Backbone.Model.extend({
|
|||
|
||||
openFileWithData: function(params, callback, fileInfo, data, updateCacheOnSuccess) {
|
||||
var logger = new Logger('open', params.name);
|
||||
if (!params.keyFileData && fileInfo && fileInfo.get('keyFileName') && this.settings.get('rememberKeyFiles')) {
|
||||
if (!params.keyFileData && fileInfo && fileInfo.get('keyFileName')) {
|
||||
params.keyFileName = fileInfo.get('keyFileName');
|
||||
params.keyFileData = FileModel.createKeyFileWithHash(fileInfo.get('keyFileHash'));
|
||||
if (this.settings.get('rememberKeyFiles') === 'data') {
|
||||
params.keyFileData = FileModel.createKeyFileWithHash(fileInfo.get('keyFileHash'));
|
||||
} else if (this.settings.get('rememberKeyFiles') === 'path' && fileInfo.get('keyFilePath')) {
|
||||
params.keyFilePath = fileInfo.get('keyFilePath');
|
||||
if (Storage.file.enabled) {
|
||||
Storage.file.load(params.keyFilePath, {}, (err, data, stat) => {
|
||||
if (err) {
|
||||
logger.info('Storage load error', err);
|
||||
callback(err);
|
||||
} else {
|
||||
params.keyFileData = data;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
var file = new FileModel({
|
||||
id: fileInfo ? fileInfo.id : IdGenerator.uuid(),
|
||||
|
@ -447,6 +461,7 @@ var AppModel = Backbone.Model.extend({
|
|||
storage: params.storage,
|
||||
path: params.path,
|
||||
keyFileName: params.keyFileName,
|
||||
keyFilePath: params.keyFilePath,
|
||||
backup: fileInfo && fileInfo.get('backup') || null
|
||||
});
|
||||
file.open(params.password, data, params.keyFileData, err => {
|
||||
|
@ -515,11 +530,18 @@ var AppModel = Backbone.Model.extend({
|
|||
openDate: dt,
|
||||
backup: file.get('backup')
|
||||
});
|
||||
if (this.settings.get('rememberKeyFiles')) {
|
||||
fileInfo.set({
|
||||
keyFileName: file.get('keyFileName') || null,
|
||||
keyFileHash: file.getKeyFileHash()
|
||||
});
|
||||
switch (this.settings.get('rememberKeyFiles')) {
|
||||
case 'data':
|
||||
fileInfo.set({
|
||||
keyFileName: file.get('keyFileName') || null,
|
||||
keyFileHash: file.getKeyFileHash()
|
||||
});
|
||||
break;
|
||||
case 'path':
|
||||
fileInfo.set({
|
||||
keyFileName: file.get('keyFileName') || null,
|
||||
keyFilePath: file.get('keyFilePath') || null
|
||||
});
|
||||
}
|
||||
this.fileInfos.remove(file.id);
|
||||
this.fileInfos.unshift(fileInfo);
|
||||
|
@ -623,7 +645,7 @@ var AppModel = Backbone.Model.extend({
|
|||
editState: file.getLocalEditState(),
|
||||
syncDate: file.get('syncDate')
|
||||
});
|
||||
if (this.settings.get('rememberKeyFiles')) {
|
||||
if (this.settings.get('rememberKeyFiles') === 'data') {
|
||||
fileInfo.set({
|
||||
keyFileName: file.get('keyFileName') || null,
|
||||
keyFileHash: file.getKeyFileHash()
|
||||
|
@ -785,6 +807,7 @@ var AppModel = Backbone.Model.extend({
|
|||
this.fileInfos.each(fileInfo => {
|
||||
fileInfo.set({
|
||||
keyFileName: null,
|
||||
keyFilePath: null,
|
||||
keyFileHash: null
|
||||
});
|
||||
});
|
||||
|
|
|
@ -46,6 +46,11 @@ var AppSettingsModel = Backbone.Model.extend({
|
|||
|
||||
load: function() {
|
||||
var data = SettingsStore.load('app-settings');
|
||||
|
||||
if (data.rememberKeyFiles === true) {
|
||||
data.rememberKeyFiles = 'data';
|
||||
}
|
||||
|
||||
if (data) {
|
||||
this.set(data, {silent: true});
|
||||
}
|
||||
|
|
|
@ -55,6 +55,7 @@ var OpenView = Backbone.View.extend({
|
|||
path: null,
|
||||
keyFileName: null,
|
||||
keyFileData: null,
|
||||
keyFilePath: null,
|
||||
fileData: null,
|
||||
rev: null
|
||||
};
|
||||
|
@ -194,6 +195,9 @@ var OpenView = Backbone.View.extend({
|
|||
case 'keyFileData':
|
||||
this.params.keyFileData = e.target.result;
|
||||
this.params.keyFileName = file.name;
|
||||
if (this.model.settings.get('rememberKeyFiles') === 'path') {
|
||||
this.params.keyFilePath = file.path;
|
||||
}
|
||||
this.displayOpenKeyFile();
|
||||
success = true;
|
||||
break;
|
||||
|
@ -242,7 +246,7 @@ var OpenView = Backbone.View.extend({
|
|||
|
||||
displayOpenKeyFile: function() {
|
||||
this.$el.toggleClass('open--key-file', !!this.params.keyFileName);
|
||||
this.$el.find('.open__settings-key-file-name').text(this.params.keyFileName || Locale.openKeyFile);
|
||||
this.$el.find('.open__settings-key-file-name').text(this.params.keyFilePath || this.params.keyFileName || Locale.openKeyFile);
|
||||
this.focusInput();
|
||||
},
|
||||
|
||||
|
@ -277,8 +281,9 @@ var OpenView = Backbone.View.extend({
|
|||
if ($(e.target).hasClass('open__settings-key-file-dropbox')) {
|
||||
this.openKeyFileFromDropbox();
|
||||
} else if (!this.busy && this.params.name) {
|
||||
if (this.params.keyFileData) {
|
||||
if (this.params.keyFileName) {
|
||||
this.params.keyFileData = null;
|
||||
this.params.keyFilePath = null;
|
||||
this.params.keyFileName = '';
|
||||
this.$el.removeClass('open--key-file');
|
||||
this.$el.find('.open__settings-key-file-name').text(Locale.openKeyFile);
|
||||
|
@ -431,6 +436,7 @@ var OpenView = Backbone.View.extend({
|
|||
this.params.fileData = null;
|
||||
this.params.rev = null;
|
||||
this.params.keyFileName = fileInfo.get('keyFileName');
|
||||
this.params.keyFilePath = fileInfo.get('keyFilePath');
|
||||
this.displayOpenFile();
|
||||
this.displayOpenKeyFile();
|
||||
},
|
||||
|
|
|
@ -85,6 +85,7 @@ var SettingsGeneralView = Backbone.View.extend({
|
|||
canClearClipboard: !!Launcher,
|
||||
clipboardSeconds: AppSettingsModel.instance.get('clipboardSeconds'),
|
||||
rememberKeyFiles: AppSettingsModel.instance.get('rememberKeyFiles'),
|
||||
supportFiles: !!Launcher,
|
||||
autoSave: AppSettingsModel.instance.get('autoSave'),
|
||||
idleMinutes: AppSettingsModel.instance.get('idleMinutes'),
|
||||
minimizeOnClose: AppSettingsModel.instance.get('minimizeOnClose'),
|
||||
|
@ -233,11 +234,9 @@ var SettingsGeneralView = Backbone.View.extend({
|
|||
},
|
||||
|
||||
changeRememberKeyFiles: function(e) {
|
||||
var rememberKeyFiles = e.target.checked || false;
|
||||
var rememberKeyFiles = e.target.value || false;
|
||||
AppSettingsModel.instance.set('rememberKeyFiles', rememberKeyFiles);
|
||||
if (!rememberKeyFiles) {
|
||||
this.appModel.clearStoredKeyFiles();
|
||||
}
|
||||
this.appModel.clearStoredKeyFiles();
|
||||
},
|
||||
|
||||
changeMinimize: function(e) {
|
||||
|
|
|
@ -86,9 +86,12 @@
|
|||
<label for="settings__general-auto-save">{{res 'setGenAutoSync'}}</label>
|
||||
</div>
|
||||
<div>
|
||||
<input type="checkbox" class="settings__input input-base settings__general-remember-key-files" id="settings__general-remember-key-files"
|
||||
{{#if rememberKeyFiles}}checked{{/if}} />
|
||||
<label for="settings__general-remember-key-files">{{res 'setGenRememberKeyFiles'}}</label>
|
||||
<label for="settings__general-remember-key-files">{{res 'setGenRememberKeyFiles'}}:</label>
|
||||
<select class="settings__general-remember-key-files settings__select input-base" id="settings__general-remember-key-files">
|
||||
<option value="" {{#unless rememberKeyFiles}}selected{{/unless}}>{{res 'setGenNoRememberKeyFiles'}}</option>
|
||||
<option value="data" {{#ifeq rememberKeyFiles 'data'}}selected{{/ifeq}}>{{res 'setGenRememberKeyFilesData'}}</option>
|
||||
{{#if supportFiles}}<option value="path" {{#ifeq rememberKeyFiles 'path'}}selected{{/ifeq}}>{{res 'setGenRememberKeyFilesPath'}}</option>{{/if}}
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label for="settings__general-idle-minutes">{{res 'setGenLockInactive'}}:</label>
|
||||
|
|
Loading…
Reference in New Issue