-
-
Notifications
You must be signed in to change notification settings - Fork 111
Expand file tree
/
Copy pathsignMethods.js
More file actions
90 lines (88 loc) · 2.53 KB
/
signMethods.js
File metadata and controls
90 lines (88 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/**
* SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { loadState } from '@nextcloud/initial-state'
import { defineStore } from 'pinia'
import { set } from 'vue'
export const useSignMethodsStore = defineStore('signMethods', {
state: () => ({
modal: {
emailToken: false,
clickToSign: false,
createPassword: false,
signPassword: false,
createSignature: false,
password: false,
sms: false,
uploadCertificate: false,
},
settings: [],
certificateEngine: loadState('libresign', 'certificate_engine', ''),
}),
actions: {
closeModal(modalCode) {
set(this.modal, modalCode, false)
},
showModal(modalCode) {
set(this.modal, modalCode, true)
},
blurredEmail() {
return this.settings?.emailToken?.blurredEmail ?? ''
},
setHasEmailConfirmCode(hasConfirmCode) {
if (!Object.hasOwn(this.settings, 'emailToken')) {
set(this.settings, 'emailToken', {})
}
set(this.settings.emailToken, 'hasConfirmCode', hasConfirmCode)
},
setEmailToken(token) {
if (!Object.hasOwn(this.settings, 'emailToken')) {
set(this.settings, 'emailToken', {})
}
set(this.settings.emailToken, 'token', token)
},
hasSignatureFile() {
return Object.hasOwn(this.settings, 'password')
&& Object.hasOwn(this.settings.password, 'hasSignatureFile')
&& this.settings.password.hasSignatureFile
},
setHasSignatureFile(hasSignatureFile) {
if (!Object.hasOwn(this.settings, 'password')) {
set(this.settings, 'password', {})
}
set(this.settings.password, 'hasSignatureFile', hasSignatureFile)
},
needCreatePassword() {
return this.needSignWithPassword()
&& (
!Object.hasOwn(this.settings, 'password')
|| !Object.hasOwn(this.settings.password, 'hasSignatureFile')
|| !this.settings.password.hasSignatureFile
)
},
needSignWithPassword() {
return Object.hasOwn(this.settings, 'password')
},
needEmailCode() {
return Object.hasOwn(this.settings, 'emailToken')
&& this.settings.emailToken.needCode
},
needClickToSign() {
return Object.hasOwn(this.settings, 'clickToSign')
},
needSmsCode() {
return Object.hasOwn(this.settings, 'sms')
&& this.settings.sms.needCode
},
needTokenCode() {
const tokenMethods = ['sms', 'whatsapp', 'signal', 'telegram', 'xmpp']
return tokenMethods.some(method =>
Object.hasOwn(this.settings, method) && this.settings[method].needCode
)
},
needCertificate() {
return this.certificateEngine === 'none' && !this.hasSignatureFile()
},
},
})