diff options
author | Marius David Wieschollek <passwords.public@mdns.eu> | 2020-12-21 22:12:39 +0300 |
---|---|---|
committer | Marius David Wieschollek <passwords.public@mdns.eu> | 2020-12-21 22:12:39 +0300 |
commit | 1267536c81fa68e2a4e29e1e6ad490d3a2cec8da (patch) | |
tree | fd5f8bbd828e7e02918271172d174cca01a44a96 /src | |
parent | ea69d2e75fb3ef986302acdc503d5fdf8ec2736a (diff) |
Fix server settings issues
Signed-off-by: Marius David Wieschollek <passwords.public@mdns.eu>
Diffstat (limited to 'src')
-rw-r--r-- | src/js/Controller/Options/DebugData.js | 6 | ||||
-rw-r--r-- | src/js/Exception/ClientNotAuthorizedError.js | 20 | ||||
-rw-r--r-- | src/js/Exception/UnknownItemTypeError.js | 10 | ||||
-rw-r--r-- | src/js/Helper/HiddenFolderHelper.js | 5 | ||||
-rw-r--r-- | src/js/Helper/SessionAuthorizationHelper.js | 4 | ||||
-rw-r--r-- | src/js/Manager/ErrorManager.js | 17 | ||||
-rw-r--r-- | src/js/Models/Server/Server.js | 2 | ||||
-rw-r--r-- | src/js/Repositories/ApiRepository.js | 3 | ||||
-rw-r--r-- | src/js/Search/Index/SearchIndex.js | 23 | ||||
-rw-r--r-- | src/js/Settings/MasterSettingsProvider.js | 11 | ||||
-rw-r--r-- | src/platform/firefox/manifest.json | 2 | ||||
-rw-r--r-- | src/platform/generic/_locales/de/messages.json | 4 | ||||
-rw-r--r-- | src/platform/generic/_locales/en/messages.json | 4 | ||||
-rw-r--r-- | src/vue/Components/Popup/Authorisation.vue | 4 |
14 files changed, 73 insertions, 42 deletions
diff --git a/src/js/Controller/Options/DebugData.js b/src/js/Controller/Options/DebugData.js index fec2f31..332812a 100644 --- a/src/js/Controller/Options/DebugData.js +++ b/src/js/Controller/Options/DebugData.js @@ -21,7 +21,11 @@ export default class DebugData extends AbstractController { try { let api = await ServerManager.getDefaultApi(), helper = new HiddenFolderHelper(); - data.hidden.id = await helper.getHiddenFolderId(api); + if(api.isAuthorized()) { + data.hidden.id = await helper.getHiddenFolderId(api); + } else { + data.hidden.id = '-'; + } } catch(e) { ErrorManager.logError(e); } diff --git a/src/js/Exception/ClientNotAuthorizedError.js b/src/js/Exception/ClientNotAuthorizedError.js new file mode 100644 index 0000000..91fbf76 --- /dev/null +++ b/src/js/Exception/ClientNotAuthorizedError.js @@ -0,0 +1,20 @@ +export default class ClientNotAuthorizedError extends Error { + + /** + * @returns {PasswordsClient} + */ + get client() { + return this._client; + } + + /** + * @param {PasswordsClient} client + */ + constructor(client) { + let name = 'Client'; + if(client.getServer()) name += ' ' + client.getServer().getLabel(); + + super(`${name} is not authorized`); + this._client = client; + } +}
\ No newline at end of file diff --git a/src/js/Exception/UnknownItemTypeError.js b/src/js/Exception/UnknownItemTypeError.js new file mode 100644 index 0000000..de2266f --- /dev/null +++ b/src/js/Exception/UnknownItemTypeError.js @@ -0,0 +1,10 @@ +export default class UnknownItemTypeError extends Error { + get item() { + return this._item; + } + + constructor(item) { + super('Unable to determine item type'); + this._item = item; + } +}
\ No newline at end of file diff --git a/src/js/Helper/HiddenFolderHelper.js b/src/js/Helper/HiddenFolderHelper.js index f336ed9..fb30f91 100644 --- a/src/js/Helper/HiddenFolderHelper.js +++ b/src/js/Helper/HiddenFolderHelper.js @@ -2,6 +2,7 @@ import ServerRepository from "@js/Repositories/ServerRepository"; import ErrorManager from "@js/Manager/ErrorManager"; import NotFoundError from "passwords-client/src/Exception/Http/NotFoundError"; import SettingsService from "@js/Services/SettingsService"; +import ClientNotAuthorizedError from "@js/Exception/ClientNotAuthorizedError"; export default class HiddenFolderHelper { @@ -21,6 +22,10 @@ export default class HiddenFolderHelper { * @returns {Promise<EnhancedFolder>} */ async getHiddenFolder(api) { + if(!api.isAuthorized()) { + throw new ClientNotAuthorizedError(api); + } + let folderId = await this._getFolderId(api); if(folderId === null) { diff --git a/src/js/Helper/SessionAuthorizationHelper.js b/src/js/Helper/SessionAuthorizationHelper.js index 7fa48c8..dcc1adc 100644 --- a/src/js/Helper/SessionAuthorizationHelper.js +++ b/src/js/Helper/SessionAuthorizationHelper.js @@ -3,10 +3,6 @@ import ErrorManager from '@js/Manager/ErrorManager'; import ServerManager from '@js/Manager/ServerManager'; import ConnectionErrorHelper from '@js/Helper/ConnectionErrorHelper'; -/** - * @external PasswordsClient - * @see https://git.mdns.eu/nextcloud/passwords-client/blob/master/src/Client/PasswordsClient.js - */ export default class SessionAuthorizationHelper { /** diff --git a/src/js/Manager/ErrorManager.js b/src/js/Manager/ErrorManager.js index 016dab3..8d14f5b 100644 --- a/src/js/Manager/ErrorManager.js +++ b/src/js/Manager/ErrorManager.js @@ -101,15 +101,20 @@ class ErrorManager { */ _convertErrorToObject(error) { if(error instanceof Error) { - return { - columnNumber: error.columnNumber ? error.columnNumber:undefined, - fileName : error.fileName ? error.fileName:undefined, - lineNumber : error.lineNumber ? error.lineNumber:undefined, - message : error.message ? error.message:undefined, + let data = { name : error.name ? error.name:undefined, - stack : error.stack ? error.stack:undefined, + stack : [], string : error.toString() }; + if(error.stack) data.stack = error.stack.split("\n"); + let properties = Object.getOwnPropertyDescriptors(error); + for(let property in properties) { + if(properties.hasOwnProperty(property) && properties[property].hasOwnProperty('value')) { + data[property] = properties[property].value; + } + } + + return data; } return error; diff --git a/src/js/Models/Server/Server.js b/src/js/Models/Server/Server.js index de01834..2da1fb6 100644 --- a/src/js/Models/Server/Server.js +++ b/src/js/Models/Server/Server.js @@ -1,4 +1,4 @@ -import ServerModel from 'passwords-client/src/Model/Server/Server'; +import {Server as ServerModel} from 'passwords-client'; import Properties from '../../Definition/Server'; export default class Server extends ServerModel { diff --git a/src/js/Repositories/ApiRepository.js b/src/js/Repositories/ApiRepository.js index 14f0d68..373c866 100644 --- a/src/js/Repositories/ApiRepository.js +++ b/src/js/Repositories/ApiRepository.js @@ -4,6 +4,9 @@ import {EnhancedClassLoader, PasswordsClient} from 'passwords-client'; import SystemService from '@js/Services/SystemService'; import LocalisationService from '@js/Services/LocalisationService'; +/** + * @typedef {PasswordsClient} PasswordsClient + */ class ApiRepository { constructor() { diff --git a/src/js/Search/Index/SearchIndex.js b/src/js/Search/Index/SearchIndex.js index 9fbc62b..bcae2fb 100644 --- a/src/js/Search/Index/SearchIndex.js +++ b/src/js/Search/Index/SearchIndex.js @@ -1,12 +1,11 @@ import PasswordIndexer from '@js/Search/Indexer/PasswordIndexer'; -import Password from 'passwords-client/src/Model/Password/Password'; +import {Password, Folder, Tag} from 'passwords-client'; import Server from '@js/Models/Server/Server'; -import Folder from 'passwords-client/src/Model/Folder/Folder'; -import Tag from 'passwords-client/src/Model/Tag/Tag'; import EventQueue from '@js/Event/EventQueue'; import ErrorManager from '@js/Manager/ErrorManager'; import FolderIndexer from '@js/Search/Indexer/FolderIndexer'; import TagIndexer from '@js/Search/Indexer/TagIndexer'; +import UnknownItemTypeError from "@js/Exception/UnknownItemTypeError"; class SearchIndex { @@ -150,18 +149,12 @@ class SearchIndex { * @private */ _getItemType(item) { - if(item instanceof Password) { - return 'password'; - } - if(item instanceof Folder) { - return 'folder'; - } - if(item instanceof Tag) { - return 'tag'; - } - if(item instanceof Server) { - return 'server'; - } + if(item instanceof Password) return 'password'; + if(item instanceof Folder) return 'folder'; + if(item instanceof Tag) return 'tag'; + if(item instanceof Server) return 'server'; + + throw new UnknownItemTypeError(item); } } diff --git a/src/js/Settings/MasterSettingsProvider.js b/src/js/Settings/MasterSettingsProvider.js index 8d95f35..3621e76 100644 --- a/src/js/Settings/MasterSettingsProvider.js +++ b/src/js/Settings/MasterSettingsProvider.js @@ -195,7 +195,10 @@ class MasterSettingsProvider { async _serverGet(key) { let setting = await this._getServerSetting(key); - return setting === null ? undefined:setting.getValue(); + if(setting === null) return undefined; + if(setting.getValue() === null) return undefined; + + return setting.getValue(); } /** @@ -223,6 +226,9 @@ class MasterSettingsProvider { repository = await this._getSettingsRepository(); if(!repository) return false; + let api = await ServerManager.getDefaultApi(); + if(!api.isAuthorized()) return false; + if(setting !== null) { setting.setValue(value); } else { @@ -293,9 +299,6 @@ class MasterSettingsProvider { async _getSettingsRepository() { try { let api = await ServerManager.getDefaultApi(); - if(api.getSessionAuthorization().needsAuthorization()) { - return null; - } return /** @type {SettingRepository} **/ api.getInstance('repository.setting'); } catch(e) { diff --git a/src/platform/firefox/manifest.json b/src/platform/firefox/manifest.json index cb948b3..57cb4c8 100644 --- a/src/platform/firefox/manifest.json +++ b/src/platform/firefox/manifest.json @@ -69,7 +69,7 @@ "protocol_handlers" : [ { "protocol" : "ext+passlink", - "name" : "__MSG_protocolHandler__", + "name" : "Passwords for Firefox", "uriTemplate": "html/passlink.html?link=%s" } ], diff --git a/src/platform/generic/_locales/de/messages.json b/src/platform/generic/_locales/de/messages.json index d97935c..53c9272 100644 --- a/src/platform/generic/_locales/de/messages.json +++ b/src/platform/generic/_locales/de/messages.json @@ -15,10 +15,6 @@ "message" : "Passwörter", "description": "Title of the context menu item" }, - "protocolHandler" : { - "message" : "PassLink Client", - "description": "Title of the custom protocol handler" - }, "BrowserActionTitleCounter" : { "message" : "Passwörter ($COUNTER$)", "description" : "Title of the button in the browser bar with suggestion counter", diff --git a/src/platform/generic/_locales/en/messages.json b/src/platform/generic/_locales/en/messages.json index ce8996d..2a14d0f 100644 --- a/src/platform/generic/_locales/en/messages.json +++ b/src/platform/generic/_locales/en/messages.json @@ -15,10 +15,6 @@ "message" : "Passwords", "description": "Title of the context menu item" }, - "protocolHandler" : { - "message" : "PassLink Client", - "description": "Title of the custom protocol handler" - }, "BrowserActionTitleCounter" : { "message" : "Passwords ($COUNTER$)", "description" : "Title of the button in the browser bar with suggestion counter", diff --git a/src/vue/Components/Popup/Authorisation.vue b/src/vue/Components/Popup/Authorisation.vue index d084dc6..801a24e 100644 --- a/src/vue/Components/Popup/Authorisation.vue +++ b/src/vue/Components/Popup/Authorisation.vue @@ -68,9 +68,9 @@ async mounted() { await this.loadNext(); if(this.hasPassword) { - this.$refs.password.focus(); + this.$refs.password.$el.focus(); } else if(this.tokenField) { - this.$refs.token.focus(); + this.$refs.token.$el.focus(); } }, |