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>2023-12-31 21:16:56 +0300
committerMarius David Wieschollek <passwords.public@mdns.eu>2023-12-31 21:16:56 +0300
commit183b9668fb9a38e578839fac96ca920205b44506 (patch)
tree3deaf6c8e9f5bd677b89019e6c80f48507d1b1b7
parent4f0186c60d9351c58659d69c5f2db103ec9ac3f2 (diff)
parent0380dc9da5ce99c8769371215e6d622c09ad8987 (diff)
Merge branch 'stable'
# Conflicts: # package-lock.json # package.json
-rw-r--r--src/Classes/EnhancedApi.js17
-rw-r--r--src/Classes/SimpleApi.js123
2 files changed, 79 insertions, 61 deletions
diff --git a/src/Classes/EnhancedApi.js b/src/Classes/EnhancedApi.js
index e8eae26..7a8ddbd 100644
--- a/src/Classes/EnhancedApi.js
+++ b/src/Classes/EnhancedApi.js
@@ -43,6 +43,7 @@ export default class EnhancedApi extends SimpleApi {
if(!config.folderIcon) config.folderIcon = `${config.baseUrl}core/img/filetypes/folder.svg`;
if(!config.apiUrl) config.apiUrl = `${config.baseUrl}index.php/apps/passwords/`;
+ if(!config.hashLength) config.hashLength = 40;
if(!config.encryption) config.encryption = new Encryption();
if(!config.cseMode || ['none', 'CSEv1r1'].indexOf(config.cseMode) === -1) config.cseMode = 'none';
@@ -70,10 +71,18 @@ export default class EnhancedApi extends SimpleApi {
*
* @param value
* @param algorithm
+ * @param [length=40]
* @returns {Promise<string>}
*/
- getHash(value, algorithm = 'SHA-1') {
- return this.config.encryption.getHash(value, algorithm);
+ async getHash(value, algorithm = 'SHA-1', length = null) {
+ if(length === null) length = this.config.hashLength;
+ let hash = await this.config.encryption.getHash(value, algorithm);
+
+ if(length !== 40) {
+ return hash.substr(0, length);
+ }
+
+ return hash;
}
/**
@@ -165,7 +174,7 @@ export default class EnhancedApi extends SimpleApi {
}
if(!object.hasOwnProperty('_encrypted')) object._encrypted = false;
- object.hash = await this.config.encryption.getHash(data.password);
+ object.hash = await this.getHash(data.password);
if(!object.label) this._generatePasswordTitle(object);
if(this.config.encryption.enabled && object.cseType !== 'none') {
@@ -196,7 +205,7 @@ export default class EnhancedApi extends SimpleApi {
}
if(!object.hasOwnProperty('_encrypted')) object._encrypted = false;
- object.hash = await this.config.encryption.getHash(data.password);
+ object.hash = await this.getHash(data.password);
if(!object.label) this._generatePasswordTitle(object);
if(this.config.encryption.enabled && object.cseType !== 'none' && (!data.hasOwnProperty('shared') || !data.shared)) {
diff --git a/src/Classes/SimpleApi.js b/src/Classes/SimpleApi.js
index 54e48c1..b92d18c 100644
--- a/src/Classes/SimpleApi.js
+++ b/src/Classes/SimpleApi.js
@@ -20,63 +20,64 @@ export default class SimpleApi {
this._config = {};
this._headers = {};
this._paths = {
- 'tag.list' : 'api/1.0/tag/list',
- 'tag.find' : 'api/1.0/tag/find',
- 'tag.show' : 'api/1.0/tag/show',
- 'tag.create' : 'api/1.0/tag/create',
- 'tag.update' : 'api/1.0/tag/update',
- 'tag.delete' : 'api/1.0/tag/delete',
- 'tag.restore' : 'api/1.0/tag/restore',
- 'share.list' : 'api/1.0/share/list',
- 'share.find' : 'api/1.0/share/find',
- 'share.show' : 'api/1.0/share/show',
- 'share.create' : 'api/1.0/share/create',
- 'share.update' : 'api/1.0/share/update',
- 'share.delete' : 'api/1.0/share/delete',
- 'share.partners' : 'api/1.0/share/partners',
- 'client.list' : 'api/1.0/client/list',
- 'client.show' : 'api/1.0/client/show',
- 'client.create' : 'api/1.0/client/create',
- 'client.update' : 'api/1.0/client/update',
- 'client.delete' : 'api/1.0/client/delete',
- 'folder.list' : 'api/1.0/folder/list',
- 'folder.find' : 'api/1.0/folder/find',
- 'folder.show' : 'api/1.0/folder/show',
- 'folder.create' : 'api/1.0/folder/create',
- 'folder.update' : 'api/1.0/folder/update',
- 'folder.delete' : 'api/1.0/folder/delete',
- 'folder.restore' : 'api/1.0/folder/restore',
- 'password.list' : 'api/1.0/password/list',
- 'password.find' : 'api/1.0/password/find',
- 'password.show' : 'api/1.0/password/show',
- 'password.create' : 'api/1.0/password/create',
- 'password.update' : 'api/1.0/password/update',
- 'password.delete' : 'api/1.0/password/delete',
- 'password.restore' : 'api/1.0/password/restore',
- 'password.generate': 'api/1.0/service/password',
- 'settings.get' : 'api/1.0/settings/get',
- 'settings.set' : 'api/1.0/settings/set',
- 'settings.list' : 'api/1.0/settings/list',
- 'settings.reset' : 'api/1.0/settings/reset',
- 'token.request' : 'api/1.0/token/{provider}/request',
- 'session.request' : 'api/1.0/session/request',
- 'session.open' : 'api/1.0/session/open',
- 'session.keepalive': 'api/1.0/session/keepalive',
- 'session.close' : 'api/1.0/session/close',
- 'keychain.get' : 'api/1.0/keychain/get',
- 'keychain.set' : 'api/1.0/keychain/set',
- 'challenge.get' : 'api/1.0/account/challenge/get',
- 'challenge.set' : 'api/1.0/account/challenge/set',
- 'account.reset' : 'api/1.0/account/reset',
- 'service.coffee' : 'api/1.0/service/coffee',
- 'service.avatar' : 'api/1.0/service/avatar/{user}/{size}',
- 'service.favicon' : 'api/1.0/service/favicon/{domain}/{size}',
- 'service.preview' : 'api/1.0/service/preview/{domain}/{view}/{width}/{height}',
- 'cron.sharing' : 'cron/sharing',
- 'link.request' : 'link/connect/request',
- 'link.await' : 'link/connect/await',
- 'link.reject' : 'link/connect/reject',
- 'link.confirm' : 'link/connect/confirm'
+ 'tag.list' : 'api/1.0/tag/list',
+ 'tag.find' : 'api/1.0/tag/find',
+ 'tag.show' : 'api/1.0/tag/show',
+ 'tag.create' : 'api/1.0/tag/create',
+ 'tag.update' : 'api/1.0/tag/update',
+ 'tag.delete' : 'api/1.0/tag/delete',
+ 'tag.restore' : 'api/1.0/tag/restore',
+ 'share.list' : 'api/1.0/share/list',
+ 'share.find' : 'api/1.0/share/find',
+ 'share.show' : 'api/1.0/share/show',
+ 'share.create' : 'api/1.0/share/create',
+ 'share.update' : 'api/1.0/share/update',
+ 'share.delete' : 'api/1.0/share/delete',
+ 'share.partners' : 'api/1.0/share/partners',
+ 'client.list' : 'api/1.0/client/list',
+ 'client.show' : 'api/1.0/client/show',
+ 'client.create' : 'api/1.0/client/create',
+ 'client.update' : 'api/1.0/client/update',
+ 'client.delete' : 'api/1.0/client/delete',
+ 'folder.list' : 'api/1.0/folder/list',
+ 'folder.find' : 'api/1.0/folder/find',
+ 'folder.show' : 'api/1.0/folder/show',
+ 'folder.create' : 'api/1.0/folder/create',
+ 'folder.update' : 'api/1.0/folder/update',
+ 'folder.delete' : 'api/1.0/folder/delete',
+ 'folder.restore' : 'api/1.0/folder/restore',
+ 'password.list' : 'api/1.0/password/list',
+ 'password.find' : 'api/1.0/password/find',
+ 'password.show' : 'api/1.0/password/show',
+ 'password.create' : 'api/1.0/password/create',
+ 'password.update' : 'api/1.0/password/update',
+ 'password.delete' : 'api/1.0/password/delete',
+ 'password.restore' : 'api/1.0/password/restore',
+ 'password.generate' : 'api/1.0/service/password',
+ 'settings.get' : 'api/1.0/settings/get',
+ 'settings.set' : 'api/1.0/settings/set',
+ 'settings.list' : 'api/1.0/settings/list',
+ 'settings.reset' : 'api/1.0/settings/reset',
+ 'token.request' : 'api/1.0/token/{provider}/request',
+ 'session.request' : 'api/1.0/session/request',
+ 'session.open' : 'api/1.0/session/open',
+ 'session.keepalive' : 'api/1.0/session/keepalive',
+ 'session.close' : 'api/1.0/session/close',
+ 'keychain.get' : 'api/1.0/keychain/get',
+ 'keychain.set' : 'api/1.0/keychain/set',
+ 'challenge.get' : 'api/1.0/account/challenge/get',
+ 'challenge.set' : 'api/1.0/account/challenge/set',
+ 'account.reset' : 'api/1.0/account/reset',
+ 'service.coffee' : 'api/1.0/service/coffee',
+ 'service.avatar' : 'api/1.0/service/avatar/{user}/{size}',
+ 'service.favicon' : 'api/1.0/service/favicon/{domain}/{size}',
+ 'service.preview' : 'api/1.0/service/preview/{domain}/{view}/{width}/{height}',
+ 'service.password-change': 'api/1.0/service/password-change',
+ 'cron.sharing' : 'cron/sharing',
+ 'link.request' : 'link/connect/request',
+ 'link.await' : 'link/connect/await',
+ 'link.reject' : 'link/connect/reject',
+ 'link.confirm' : 'link/connect/confirm'
};
}
@@ -631,6 +632,14 @@ export default class SimpleApi {
);
}
+ /**
+ *
+ * @returns {Promise}
+ */
+ getPasswordChangeUrl(domain) {
+ return this._sendRequest('service.password-change', {domain});
+ }
+
/**
* Account Management