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

git.mdns.eu/nextcloud/passwords-client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius David Wieschollek <passwords.public@mdns.eu>2021-01-04 22:00:49 +0300
committerMarius David Wieschollek <passwords.public@mdns.eu>2021-01-04 22:00:49 +0300
commit60df1a02f674572194335796158a0cf9177f2d93 (patch)
tree835098d81055fb6fdb731caeb0bc10bb3db6bced
parent71c19da108a1efc82bcb52fd5c1aa7aa55fe6b7f (diff)
Fix issues with defect custom field data
Signed-off-by: Marius David Wieschollek <passwords.public@mdns.eu>
-rw-r--r--src/ClassLoader/BasicClassLoader.js2
-rw-r--r--src/ClassLoader/DefaultClassLoader.js7
-rw-r--r--src/Client/BasicPasswordsClient.js7
-rw-r--r--src/Converter/CustomFieldConverter.js15
-rw-r--r--src/Logger/Logger.js68
-rw-r--r--src/Model/CustomField/DefectField.js14
6 files changed, 106 insertions, 7 deletions
diff --git a/src/ClassLoader/BasicClassLoader.js b/src/ClassLoader/BasicClassLoader.js
index 5f0cf36..d4ef1e8 100644
--- a/src/ClassLoader/BasicClassLoader.js
+++ b/src/ClassLoader/BasicClassLoader.js
@@ -3,7 +3,7 @@ import ObjectMerger from "../Utility/ObjectMerger";
export default class BasicClassLoader {
constructor(classes = {}) {
- this._classes = ObjectMerger.merge(this._getDefaultClasses(), classes);
+ this._classes = Object.assign(this._getDefaultClasses(), classes);
this._instances = {};
}
diff --git a/src/ClassLoader/DefaultClassLoader.js b/src/ClassLoader/DefaultClassLoader.js
index 18c5dbd..d749664 100644
--- a/src/ClassLoader/DefaultClassLoader.js
+++ b/src/ClassLoader/DefaultClassLoader.js
@@ -64,6 +64,8 @@ import ConfigurationError from "../Exception/ConfigruationError";
import MissingEncryptionKeyError from "../Exception/Encryption/MissingEncryptionKeyError";
import InvalidEncryptedTextLength from "../Exception/Encryption/InvalidEncryptedTextLength";
import HashService from "../Services/HashService";
+import Logger from "../Logger/Logger";
+import DefectField from "../Model/CustomField/DefectField";
export default class DefaultClassLoader extends BasicClassLoader {
@@ -102,6 +104,7 @@ export default class DefaultClassLoader extends BasicClassLoader {
'model.secretField': SecretField,
'model.textField' : TextField,
'model.urlField' : UrlField,
+ 'model.defectField': DefectField,
'model.setting' : Setting,
'network.request' : ApiRequest,
@@ -120,10 +123,12 @@ export default class DefaultClassLoader extends BasicClassLoader {
'keychain.csev1': (k, p) => { return new CSEv1Keychain(this.getInstance('classes'), k, p); },
- 'service.hash' : () => { return new HashService(this.getInstance('classes')); },
+ 'service.hash' : () => { return new HashService(this.getInstance('classes')); },
'service.model' : () => { return new ModelService(this.getInstance('classes')); },
'service.password': () => { return new PasswordService(this.getInstance('client')); },
+ 'logger': Logger,
+
'cache.cache': Cache,
'state.boolean': BooleanState,
diff --git a/src/Client/BasicPasswordsClient.js b/src/Client/BasicPasswordsClient.js
index f313211..a0411e3 100644
--- a/src/Client/BasicPasswordsClient.js
+++ b/src/Client/BasicPasswordsClient.js
@@ -66,6 +66,13 @@ export default class BasicPasswordsClient {
}
/**
+ * @returns {Logger}
+ */
+ getLogger() {
+ return this._classes.getInstance('logger');
+ }
+
+ /**
* @returns {Boolean}
*/
isAuthorized() {
diff --git a/src/Converter/CustomFieldConverter.js b/src/Converter/CustomFieldConverter.js
index c4bbda1..f9aca65 100644
--- a/src/Converter/CustomFieldConverter.js
+++ b/src/Converter/CustomFieldConverter.js
@@ -1,10 +1,10 @@
export default class CustomFieldConverter {
/**
- * @param {BasicPasswordsClient} api
+ * @param {BasicPasswordsClient} client
*/
- constructor(api) {
- this._api = api;
+ constructor(client) {
+ this._client = client;
}
/**
@@ -31,9 +31,14 @@ export default class CustomFieldConverter {
* @api
*/
fromObject(object) {
+ if(!object.hasOwnProperty('type') || object.type === null) {
+ this._client.getLogger().warning('Ignoring invalid custom field data', {field: object});
+ this._client.getClass(`model.defectField`, {label:'##ERROR##', value:JSON.stringify(object)})
+ }
+
let type = object.type;
- return this._api.getClass(`model.${type}Field`, object);
+ return this._client.getClass(`model.${type}Field`, object);
}
/**
@@ -48,7 +53,7 @@ export default class CustomFieldConverter {
fields.push(this.fromObject(field));
}
- return this._api.getClass('collection.field', fields);
+ return this._client.getClass('collection.field', fields);
}
/**
diff --git a/src/Logger/Logger.js b/src/Logger/Logger.js
new file mode 100644
index 0000000..646da36
--- /dev/null
+++ b/src/Logger/Logger.js
@@ -0,0 +1,68 @@
+export default class Logger {
+
+ /**
+ * @returns {Number}
+ */
+ get logLevel() {
+ return this._logLevel;
+ }
+
+ /**
+ * @param {Number} value
+ */
+ set logLevel(value) {
+ this._logLevel = value;
+ }
+
+ /**
+ * @param {Number} [logLevel=0]
+ */
+ constructor(logLevel = 0) {
+ this._logLevel = logLevel;
+ }
+
+ /**
+ * @param {String} message
+ * @param {Object} [context={}]
+ */
+ debug(message, context = {}) {
+ if(this._logLevel > 0) return;
+ console.debug(message, context);
+ }
+
+ /**
+ * @param {String} message
+ * @param {Object} [context={}]
+ */
+ info(message, context = {}) {
+ if(this._logLevel > 1) return;
+ console.info(message, context);
+ }
+
+ /**
+ * @param {String} message
+ * @param {Object} [context={}]
+ */
+ log(message, context = {}) {
+ if(this._logLevel > 2) return;
+ console.log(message, context);
+ }
+
+ /**
+ * @param {String} message
+ * @param {Object} [context={}]
+ */
+ warning(message, context = {}) {
+ if(this._logLevel > 3) return;
+ console.warn(message, context);
+ }
+
+ /**
+ * @param {String} message
+ * @param {Object} [context={}]
+ */
+ error(message, context = {}) {
+ if(this._logLevel > 4) return;
+ console.error(message, context);
+ }
+} \ No newline at end of file
diff --git a/src/Model/CustomField/DefectField.js b/src/Model/CustomField/DefectField.js
new file mode 100644
index 0000000..773f311
--- /dev/null
+++ b/src/Model/CustomField/DefectField.js
@@ -0,0 +1,14 @@
+import AbstractField from './AbstractField';
+import Properties from '../../Configuration/TextField.json';
+
+export default class DefectField extends AbstractField {
+
+ /**
+ *
+ * @param {object} data
+ */
+ constructor(data) {
+ data.type = 'defect';
+ super(Properties, data);
+ }
+} \ No newline at end of file