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
|
import Vue from 'vue';
import { updateHistory, removeParams } from '~/lib/utils/url_utility';
import ManageTwoFactorForm from './components/manage_two_factor_form.vue';
import RecoveryCodes from './components/recovery_codes.vue';
import { SUCCESS_QUERY_PARAM } from './constants';
export const initManageTwoFactorForm = () => {
const el = document.querySelector('.js-manage-two-factor-form');
if (!el) {
return false;
}
const {
webauthnEnabled = false,
profileTwoFactorAuthPath = '',
profileTwoFactorAuthMethod = '',
codesProfileTwoFactorAuthPath = '',
codesProfileTwoFactorAuthMethod = '',
} = el.dataset;
return new Vue({
el,
provide: {
webauthnEnabled,
profileTwoFactorAuthPath,
profileTwoFactorAuthMethod,
codesProfileTwoFactorAuthPath,
codesProfileTwoFactorAuthMethod,
},
render(createElement) {
return createElement(ManageTwoFactorForm);
},
});
};
export const initRecoveryCodes = () => {
const el = document.querySelector('.js-2fa-recovery-codes');
if (!el) {
return false;
}
const { codes = '[]', profileAccountPath = '' } = el.dataset;
return new Vue({
el,
render(createElement) {
return createElement(RecoveryCodes, {
props: {
codes: JSON.parse(codes),
profileAccountPath,
},
});
},
});
};
export const initClose2faSuccessMessage = () => {
const closeButton = document.querySelector('.js-close-2fa-enabled-success-alert');
if (!closeButton) {
return;
}
closeButton.addEventListener(
'click',
() => {
updateHistory({
url: removeParams([SUCCESS_QUERY_PARAM]),
title: document.title,
replace: true,
});
},
{ once: true },
);
};
|