Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/marius-wieschollek/passwords-webextension.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarius David Wieschollek <passwords.public@mdns.eu>2020-12-21 22:12:39 +0300
committerMarius David Wieschollek <passwords.public@mdns.eu>2020-12-21 22:12:39 +0300
commit1267536c81fa68e2a4e29e1e6ad490d3a2cec8da (patch)
treefd5f8bbd828e7e02918271172d174cca01a44a96 /src
parentea69d2e75fb3ef986302acdc503d5fdf8ec2736a (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.js6
-rw-r--r--src/js/Exception/ClientNotAuthorizedError.js20
-rw-r--r--src/js/Exception/UnknownItemTypeError.js10
-rw-r--r--src/js/Helper/HiddenFolderHelper.js5
-rw-r--r--src/js/Helper/SessionAuthorizationHelper.js4
-rw-r--r--src/js/Manager/ErrorManager.js17
-rw-r--r--src/js/Models/Server/Server.js2
-rw-r--r--src/js/Repositories/ApiRepository.js3
-rw-r--r--src/js/Search/Index/SearchIndex.js23
-rw-r--r--src/js/Settings/MasterSettingsProvider.js11
-rw-r--r--src/platform/firefox/manifest.json2
-rw-r--r--src/platform/generic/_locales/de/messages.json4
-rw-r--r--src/platform/generic/_locales/en/messages.json4
-rw-r--r--src/vue/Components/Popup/Authorisation.vue4
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();
}
},