diff options
author | Marius David Wieschollek <passwords.public@mdns.eu> | 2023-12-31 21:16:56 +0300 |
---|---|---|
committer | Marius David Wieschollek <passwords.public@mdns.eu> | 2023-12-31 21:16:56 +0300 |
commit | 183b9668fb9a38e578839fac96ca920205b44506 (patch) | |
tree | 3deaf6c8e9f5bd677b89019e6c80f48507d1b1b7 | |
parent | 4f0186c60d9351c58659d69c5f2db103ec9ac3f2 (diff) | |
parent | 0380dc9da5ce99c8769371215e6d622c09ad8987 (diff) |
Merge branch 'stable'
# Conflicts:
# package-lock.json
# package.json
-rw-r--r-- | src/Classes/EnhancedApi.js | 17 | ||||
-rw-r--r-- | src/Classes/SimpleApi.js | 123 |
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 |