l-min-components 1.0.598 → 1.0.601
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/components/AdminSecuritySettings/2fa/index.jsx +221 -0
- package/src/components/AdminSecuritySettings/2fa/index.styled.js +198 -0
- package/src/components/AdminSecuritySettings/assets/images/qr_code.png +0 -0
- package/src/components/AdminSecuritySettings/assets/images/shield.png +0 -0
- package/src/components/AdminSecuritySettings/assets/images/shield_big.png +0 -0
- package/src/components/AdminSecuritySettings/assets/images/subtract.png +0 -0
- package/src/components/AdminSecuritySettings/assets/images/twofa.png +0 -0
- package/src/components/AdminSecuritySettings/assets/svg/backArrow.jsx +30 -0
- package/src/components/AdminSecuritySettings/index.jsx +89 -0
- package/src/components/AdminSecuritySettings/index.styled.js +97 -0
- package/src/components/AdminSecuritySettings/modals/index.styled.js +356 -0
- package/src/components/AdminSecuritySettings/modals/opt-out-modal.jsx +88 -0
- package/src/components/AdminSecuritySettings/modals/otp-password-modal.jsx +158 -0
- package/src/components/AdminSecuritySettings/modals/security-question-modal.jsx +93 -0
- package/src/components/AdminSecuritySettings/modals/success-modal.jsx +75 -0
- package/src/components/AdminSecuritySettings/password/change-password.jsx +79 -0
- package/src/components/AdminSecuritySettings/password/index.jsx +28 -0
- package/src/components/AdminSecuritySettings/password/index.styled.js +41 -0
- package/src/components/index.js +1 -1
package/package.json
CHANGED
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import { AdminTwoFaSecurityContainer } from "./index.styled";
|
|
3
|
+
import img from "../assets/images/twofa.png";
|
|
4
|
+
import qr from "../assets/images/qr_code.png";
|
|
5
|
+
import shield from "../assets/images/shield.png";
|
|
6
|
+
import ButtonComponent from "../../button";
|
|
7
|
+
import Radio from "../../radio";
|
|
8
|
+
import InputComponent from "../../input";
|
|
9
|
+
import SecuritySuccessModal from "../modals/success-modal";
|
|
10
|
+
import ToggleButtonComponent from "../../toggle button";
|
|
11
|
+
import { useNavigate } from "react-router-dom";
|
|
12
|
+
import OTPSecurityModal from "../modals/otp-password-modal";
|
|
13
|
+
import SecurityQuestionModal from "../modals/security-question-modal";
|
|
14
|
+
import SecurityOptOutModal from "../modals/opt-out-modal";
|
|
15
|
+
|
|
16
|
+
const AdminTwoFaSecurity = () => {
|
|
17
|
+
const navigate = useNavigate();
|
|
18
|
+
|
|
19
|
+
const options = [
|
|
20
|
+
{ value: "Authenticator apps", label: "Authenticator apps" },
|
|
21
|
+
{ value: "Email", label: "Email" },
|
|
22
|
+
];
|
|
23
|
+
const [type, setType] = useState("Authenticator apps");
|
|
24
|
+
const [modalOne, setModalOne] = useState(false);
|
|
25
|
+
const [otpModal, setOtpModal] = useState(false);
|
|
26
|
+
const [authCurrent, setAuthCurrent] = useState(false);
|
|
27
|
+
const [securityQuestionModal, setSecurityQuestionModal] = useState(false);
|
|
28
|
+
const [successModal, setSuccessModal] = useState(false);
|
|
29
|
+
const [optOutModal, setOptOutModal] = useState(false);
|
|
30
|
+
const [emailCurrent, setEmailCurrent] = useState(false);
|
|
31
|
+
|
|
32
|
+
const [checked, setChecked] = useState(false);
|
|
33
|
+
|
|
34
|
+
const handleChange = (newValue) => {
|
|
35
|
+
setChecked(newValue);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const handleOptionChange = (newValue) => {
|
|
39
|
+
console.log("New value:", newValue);
|
|
40
|
+
setType(newValue);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<AdminTwoFaSecurityContainer>
|
|
45
|
+
<div className="twofa_banner_container">
|
|
46
|
+
<div className="twofa_bc_section">
|
|
47
|
+
<div className="twofa_img">
|
|
48
|
+
<img src={img} alt="" />
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<div className="twofa_bc_details">
|
|
52
|
+
<p className="twofa_bc_title">Help Protect Your Account</p>
|
|
53
|
+
|
|
54
|
+
<p className="twofa_bc_subtitle">
|
|
55
|
+
To get started with your two factor authentication,
|
|
56
|
+
<br /> select your means of receiving code
|
|
57
|
+
</p>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<div className="twofa_bc_section_two">
|
|
62
|
+
<div className="twofa_radio">
|
|
63
|
+
<Radio
|
|
64
|
+
options={options}
|
|
65
|
+
color="#FEBF10"
|
|
66
|
+
defaultValue="Authenticator apps"
|
|
67
|
+
onChange={handleOptionChange}
|
|
68
|
+
direction="row"
|
|
69
|
+
/>
|
|
70
|
+
|
|
71
|
+
<p className="twofa_note">Recommended.</p>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
{/* for email 2fa */}
|
|
77
|
+
{type === "Email" && (
|
|
78
|
+
<>
|
|
79
|
+
{emailCurrent ? (
|
|
80
|
+
<>
|
|
81
|
+
<p className="current_txt"> Current:</p>
|
|
82
|
+
|
|
83
|
+
<div className="current_auth_main">
|
|
84
|
+
<div className="auth_shield">
|
|
85
|
+
<img src={shield} alt="" />
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
<p className="current_auth_txt">
|
|
89
|
+
Email: **********oe@gmail.com{" "}
|
|
90
|
+
</p>
|
|
91
|
+
|
|
92
|
+
<div className="crr_toggle">
|
|
93
|
+
<ToggleButtonComponent />
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
</>
|
|
97
|
+
) : (
|
|
98
|
+
<ButtonComponent
|
|
99
|
+
text={"Setup"}
|
|
100
|
+
onClick={() => setOtpModal(true)}
|
|
101
|
+
styles={{ height: 44, marginLeft: 30 }}
|
|
102
|
+
/>
|
|
103
|
+
)}
|
|
104
|
+
<OTPSecurityModal
|
|
105
|
+
isOpen={otpModal}
|
|
106
|
+
onRequestClose={() => {
|
|
107
|
+
setOtpModal(false);
|
|
108
|
+
}}
|
|
109
|
+
nextOpen={() => {
|
|
110
|
+
setOtpModal(false);
|
|
111
|
+
setSecurityQuestionModal(true);
|
|
112
|
+
}}
|
|
113
|
+
OTPvalue={"drp******@gmail.com "}
|
|
114
|
+
OTPtype={"email"}
|
|
115
|
+
/>
|
|
116
|
+
<SecurityQuestionModal
|
|
117
|
+
isOpen={securityQuestionModal}
|
|
118
|
+
onRequestClose={() => setSecurityQuestionModal(false)}
|
|
119
|
+
nextOpen={() => {
|
|
120
|
+
setSecurityQuestionModal(false);
|
|
121
|
+
setSuccessModal(true);
|
|
122
|
+
}}
|
|
123
|
+
/>
|
|
124
|
+
<SecuritySuccessModal
|
|
125
|
+
isOpen={successModal}
|
|
126
|
+
onRequestClose={() => {
|
|
127
|
+
setSuccessModal(false);
|
|
128
|
+
setEmailCurrent(true);
|
|
129
|
+
}}
|
|
130
|
+
title="Your Two factor authentication is setup successfully."
|
|
131
|
+
/>
|
|
132
|
+
<SecurityOptOutModal
|
|
133
|
+
isOpen={optOutModal}
|
|
134
|
+
onRequestClose={() => {
|
|
135
|
+
setOptOutModal(false);
|
|
136
|
+
setOtpModal(true);
|
|
137
|
+
}}
|
|
138
|
+
/>
|
|
139
|
+
</>
|
|
140
|
+
)}
|
|
141
|
+
|
|
142
|
+
{/* for Authenticator apps 2fa */}
|
|
143
|
+
{type === "Authenticator apps" && (
|
|
144
|
+
<>
|
|
145
|
+
{authCurrent ? (
|
|
146
|
+
<>
|
|
147
|
+
<p className="current_txt"> Current:</p>
|
|
148
|
+
|
|
149
|
+
<div className="current_auth_main">
|
|
150
|
+
<div className="auth_shield">
|
|
151
|
+
<img src={shield} alt="" />
|
|
152
|
+
</div>
|
|
153
|
+
|
|
154
|
+
<p className="current_auth_txt"> Google Authenticator </p>
|
|
155
|
+
|
|
156
|
+
<div className="crr_toggle">
|
|
157
|
+
<ToggleButtonComponent />
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
</>
|
|
161
|
+
) : (
|
|
162
|
+
<div className="twofa_main">
|
|
163
|
+
<p className="twofa_apps_txt">
|
|
164
|
+
Set up via Third Party Authentication{" "}
|
|
165
|
+
</p>
|
|
166
|
+
|
|
167
|
+
<div className="twofa_apps_row">
|
|
168
|
+
<div className="twofa_apps_qr">
|
|
169
|
+
<div className="taq_box">
|
|
170
|
+
<img src={qr} alt="" />
|
|
171
|
+
</div>
|
|
172
|
+
|
|
173
|
+
<p className="twofa_apps_subtitle">
|
|
174
|
+
Use your authentication app (such as Google Authenticator)
|
|
175
|
+
to scan this QR code.
|
|
176
|
+
</p>
|
|
177
|
+
</div>
|
|
178
|
+
|
|
179
|
+
<div className="auth_app_code">
|
|
180
|
+
<div>
|
|
181
|
+
<div className="app_code_txt"> TAHT ST5D TG7S 9872 </div>
|
|
182
|
+
|
|
183
|
+
<div className="app_code_note">
|
|
184
|
+
Or enter this code above into your authenticator app
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
<div className="app_code_form">
|
|
189
|
+
<div className="form_group">
|
|
190
|
+
<InputComponent
|
|
191
|
+
inputType="text"
|
|
192
|
+
label="Verification Code"
|
|
193
|
+
required
|
|
194
|
+
/>
|
|
195
|
+
<ButtonComponent
|
|
196
|
+
text={"Verify"}
|
|
197
|
+
styles={{ width: "" }}
|
|
198
|
+
onClick={() => setModalOne(true)}
|
|
199
|
+
/>
|
|
200
|
+
</div>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
</div>
|
|
205
|
+
)}
|
|
206
|
+
|
|
207
|
+
<SecuritySuccessModal
|
|
208
|
+
isOpen={modalOne}
|
|
209
|
+
onRequestClose={() => {
|
|
210
|
+
setModalOne(false);
|
|
211
|
+
setAuthCurrent(true);
|
|
212
|
+
}}
|
|
213
|
+
title="Your Two factor authentication is setup successfully."
|
|
214
|
+
/>
|
|
215
|
+
</>
|
|
216
|
+
)}
|
|
217
|
+
</AdminTwoFaSecurityContainer>
|
|
218
|
+
);
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
export default AdminTwoFaSecurity;
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import styled from "styled-components";
|
|
2
|
+
|
|
3
|
+
export const AdminTwoFaSecurityContainer = styled.div`
|
|
4
|
+
background-color: #f5f7f7;
|
|
5
|
+
|
|
6
|
+
.current_txt {
|
|
7
|
+
color: #636666;
|
|
8
|
+
font-size: 14px;
|
|
9
|
+
font-weight: 400;
|
|
10
|
+
margin-bottom: 5px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.current_auth_main {
|
|
14
|
+
padding: 15px;
|
|
15
|
+
border-radius: 15px;
|
|
16
|
+
background: #f5f7f7;
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
gap: 15px;
|
|
20
|
+
max-width: 400px;
|
|
21
|
+
width: 100%;
|
|
22
|
+
|
|
23
|
+
.crr_toggle {
|
|
24
|
+
margin-left: auto;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.auth_shield {
|
|
28
|
+
max-width: 35px;
|
|
29
|
+
width: 100%;
|
|
30
|
+
|
|
31
|
+
img {
|
|
32
|
+
width: 100%;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.current_auth_txt {
|
|
37
|
+
color: #636666;
|
|
38
|
+
font-size: 16px;
|
|
39
|
+
font-weight: 400;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.twofa_banner_container {
|
|
44
|
+
border-radius: 15px;
|
|
45
|
+
background: #f5f7f7;
|
|
46
|
+
padding: 16px 33px;
|
|
47
|
+
display: flex;
|
|
48
|
+
justify-content: space-between;
|
|
49
|
+
margin-bottom: 18px;
|
|
50
|
+
|
|
51
|
+
.twofa_bc_section {
|
|
52
|
+
width: 45%;
|
|
53
|
+
display: flex;
|
|
54
|
+
gap: 31px;
|
|
55
|
+
.twofa_img {
|
|
56
|
+
max-width: 46px;
|
|
57
|
+
width: 100%;
|
|
58
|
+
img {
|
|
59
|
+
width: 100%;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.twofa_bc_details {
|
|
64
|
+
.twofa_bc_title {
|
|
65
|
+
color: #febf10;
|
|
66
|
+
font-size: 20px;
|
|
67
|
+
font-weight: 700;
|
|
68
|
+
margin-bottom: 10px;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.twofa_bc_subtitle {
|
|
72
|
+
color: #313333;
|
|
73
|
+
font-size: 16px;
|
|
74
|
+
font-weight: 400;
|
|
75
|
+
line-height: normal;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.twofa_bc_section_two {
|
|
81
|
+
width: 45%;
|
|
82
|
+
position: relative;
|
|
83
|
+
padding-top: 24px;
|
|
84
|
+
|
|
85
|
+
&::before {
|
|
86
|
+
content: "";
|
|
87
|
+
height: 91px;
|
|
88
|
+
width: 2px;
|
|
89
|
+
background-color: #dfe5e5;
|
|
90
|
+
display: flex;
|
|
91
|
+
justify-content: center;
|
|
92
|
+
align-items: center;
|
|
93
|
+
position: absolute;
|
|
94
|
+
left: -75px;
|
|
95
|
+
top: 0;
|
|
96
|
+
border-radius: 6px;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.twofa_radio {
|
|
100
|
+
.twofa_note {
|
|
101
|
+
color: #30d468;
|
|
102
|
+
font-size: 14px;
|
|
103
|
+
font-style: italic;
|
|
104
|
+
font-weight: 400;
|
|
105
|
+
margin-left: 25px;
|
|
106
|
+
margin-top: 4px;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.twofa_main {
|
|
113
|
+
.twofa_apps_txt {
|
|
114
|
+
color: #313333;
|
|
115
|
+
font-size: 18px;
|
|
116
|
+
font-weight: 700;
|
|
117
|
+
letter-spacing: 0.36px;
|
|
118
|
+
margin-bottom: 16px;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.twofa_apps_row {
|
|
122
|
+
display: flex;
|
|
123
|
+
gap: 35px;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.twofa_apps_qr {
|
|
127
|
+
border-radius: 15px;
|
|
128
|
+
border: 1px solid #dfe5e5;
|
|
129
|
+
padding: 16px;
|
|
130
|
+
background-color: #dfe5e5;
|
|
131
|
+
max-width: 250px;
|
|
132
|
+
width: 100%;
|
|
133
|
+
|
|
134
|
+
.taq_box {
|
|
135
|
+
max-width: 144px;
|
|
136
|
+
width: 100%;
|
|
137
|
+
margin: 0 auto;
|
|
138
|
+
|
|
139
|
+
img {
|
|
140
|
+
width: 100%;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.twofa_apps_subtitle {
|
|
145
|
+
margin-top: 10px;
|
|
146
|
+
color: #636666;
|
|
147
|
+
font-size: 14px;
|
|
148
|
+
font-weight: 400;
|
|
149
|
+
letter-spacing: 0.56px;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.auth_app_code {
|
|
154
|
+
display: flex;
|
|
155
|
+
justify-content: space-between;
|
|
156
|
+
flex-direction: column;
|
|
157
|
+
.app_code_txt {
|
|
158
|
+
padding: 10px 22px;
|
|
159
|
+
border-radius: 10px;
|
|
160
|
+
background: #f5f7f7;
|
|
161
|
+
color: #636666;
|
|
162
|
+
display: flex;
|
|
163
|
+
align-items: center;
|
|
164
|
+
justify-content: center;
|
|
165
|
+
text-align: center;
|
|
166
|
+
font-size: 16px;
|
|
167
|
+
font-weight: 700;
|
|
168
|
+
line-height: normal;
|
|
169
|
+
letter-spacing: 0.64px;
|
|
170
|
+
margin-bottom: 15px;
|
|
171
|
+
max-width: 236px;
|
|
172
|
+
width: 100%;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.app_code_note {
|
|
176
|
+
max-width: 232px;
|
|
177
|
+
width: 100%;
|
|
178
|
+
color: #636666;
|
|
179
|
+
font-size: 16px;
|
|
180
|
+
font-weight: 600;
|
|
181
|
+
line-height: normal;
|
|
182
|
+
letter-spacing: 0.64px;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.app_code_form {
|
|
186
|
+
margin-top: auto;
|
|
187
|
+
max-width: 390px;
|
|
188
|
+
width: 100%;
|
|
189
|
+
|
|
190
|
+
.form_group {
|
|
191
|
+
display: flex;
|
|
192
|
+
align-items: end;
|
|
193
|
+
gap: 16px;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
`;
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
export const BackArrowIcon = () => {
|
|
4
|
+
return (
|
|
5
|
+
<svg
|
|
6
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
7
|
+
width="24"
|
|
8
|
+
height="25"
|
|
9
|
+
viewBox="0 0 24 25"
|
|
10
|
+
fill="none"
|
|
11
|
+
>
|
|
12
|
+
<g clipPath="url(#clip0_3085_48537)">
|
|
13
|
+
<path
|
|
14
|
+
d="M20 11.5H7.83L13.42 5.91L12 4.5L4 12.5L12 20.5L13.41 19.09L7.83 13.5H20V11.5Z"
|
|
15
|
+
fill="#323232"
|
|
16
|
+
/>
|
|
17
|
+
</g>
|
|
18
|
+
<defs>
|
|
19
|
+
<clipPath id="clip0_3085_48537">
|
|
20
|
+
<rect
|
|
21
|
+
width="24"
|
|
22
|
+
height="24"
|
|
23
|
+
fill="white"
|
|
24
|
+
transform="translate(0 0.5)"
|
|
25
|
+
/>
|
|
26
|
+
</clipPath>
|
|
27
|
+
</defs>
|
|
28
|
+
</svg>
|
|
29
|
+
);
|
|
30
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import { AdminSecurityContainer } from "./index.styled";
|
|
3
|
+
import { useNavigate } from "react-router-dom";
|
|
4
|
+
import AdminSecurityPassword from "./password";
|
|
5
|
+
import AdminSecurityChangePassword from "./password/change-password";
|
|
6
|
+
import AdminTwoFaSecurity from "./2fa";
|
|
7
|
+
import OTPSecurityModal from "./modals/otp-password-modal";
|
|
8
|
+
import SecuritySuccessModal from "./modals/success-modal";
|
|
9
|
+
|
|
10
|
+
const AdminSecurity = () => {
|
|
11
|
+
const navigate = useNavigate();
|
|
12
|
+
const [activeTab, setActiveTab] = useState(1);
|
|
13
|
+
const [modalIsOpen, setIsOpen] = useState(false);
|
|
14
|
+
const [passwordPage, setPasswordPage] = useState(false);
|
|
15
|
+
const [modalOne, setModalOne] = useState(false);
|
|
16
|
+
|
|
17
|
+
const closeModal = () => {
|
|
18
|
+
setIsOpen(false);
|
|
19
|
+
};
|
|
20
|
+
return (
|
|
21
|
+
<AdminSecurityContainer>
|
|
22
|
+
<>
|
|
23
|
+
{!passwordPage && (
|
|
24
|
+
<>
|
|
25
|
+
<div className="ass_header">
|
|
26
|
+
<p className="ass_title"> Security </p>
|
|
27
|
+
<p className="ass_ref">
|
|
28
|
+
Settings <span className="slash">/</span> <span>Profile</span>
|
|
29
|
+
</p>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div className="ass_tab_row">
|
|
33
|
+
<div className="ass_tab_group">
|
|
34
|
+
<div
|
|
35
|
+
className={`ass_tab ${activeTab === 1 ? "active" : ""}`}
|
|
36
|
+
onClick={() => setActiveTab(1)}
|
|
37
|
+
>
|
|
38
|
+
Password
|
|
39
|
+
</div>
|
|
40
|
+
<div
|
|
41
|
+
className={`ass_tab ${activeTab === 2 ? "active" : ""}`}
|
|
42
|
+
onClick={() => setActiveTab(2)}
|
|
43
|
+
>
|
|
44
|
+
2F Authentication
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
{activeTab === 1 && (
|
|
50
|
+
<>
|
|
51
|
+
<AdminSecurityPassword onClick={() => setIsOpen(true)} />
|
|
52
|
+
</>
|
|
53
|
+
)}
|
|
54
|
+
{activeTab === 2 && (
|
|
55
|
+
<>
|
|
56
|
+
<AdminTwoFaSecurity />
|
|
57
|
+
</>
|
|
58
|
+
)}
|
|
59
|
+
</>
|
|
60
|
+
)}
|
|
61
|
+
</>
|
|
62
|
+
|
|
63
|
+
{passwordPage && (
|
|
64
|
+
<AdminSecurityChangePassword
|
|
65
|
+
modalOne={modalOne}
|
|
66
|
+
setModalOne={setModalOne}
|
|
67
|
+
nextOpen={() => setPasswordPage(false)}
|
|
68
|
+
onRequestClose={() => {
|
|
69
|
+
setPasswordPage(false);
|
|
70
|
+
setModalOne(false);
|
|
71
|
+
}}
|
|
72
|
+
/>
|
|
73
|
+
)}
|
|
74
|
+
|
|
75
|
+
<OTPSecurityModal
|
|
76
|
+
isOpen={modalIsOpen}
|
|
77
|
+
onRequestClose={closeModal}
|
|
78
|
+
nextOpen={() => {
|
|
79
|
+
setPasswordPage(true);
|
|
80
|
+
setIsOpen(false);
|
|
81
|
+
}}
|
|
82
|
+
OTPvalue={"*****222"}
|
|
83
|
+
OTPtype={"phone"}
|
|
84
|
+
/>
|
|
85
|
+
</AdminSecurityContainer>
|
|
86
|
+
);
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export default AdminSecurity;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import styled from "styled-components";
|
|
2
|
+
|
|
3
|
+
export const AdminSecurityContainer = styled.div`
|
|
4
|
+
.ass_header {
|
|
5
|
+
display: flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
justify-content: space-between;
|
|
8
|
+
margin-bottom: 20px;
|
|
9
|
+
|
|
10
|
+
.ass_title {
|
|
11
|
+
color: #1c2434;
|
|
12
|
+
font-size: 18px;
|
|
13
|
+
font-weight: 700;
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
gap: 10px;
|
|
17
|
+
span {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.ass_ref {
|
|
24
|
+
color: #64748b;
|
|
25
|
+
font-size: 16px;
|
|
26
|
+
font-weight: 600;
|
|
27
|
+
line-height: normal;
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
gap: 8px;
|
|
31
|
+
|
|
32
|
+
span {
|
|
33
|
+
color: #3c50e0;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.slash {
|
|
37
|
+
color: #64748b;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.ass_tab_row {
|
|
43
|
+
display: flex;
|
|
44
|
+
align-items: center;
|
|
45
|
+
margin-bottom: 20px;
|
|
46
|
+
justify-content: space-between;
|
|
47
|
+
width: 100%;
|
|
48
|
+
max-width: 420px;
|
|
49
|
+
border-radius: 11px;
|
|
50
|
+
background: #f5f7f7;
|
|
51
|
+
.ass_tab_group {
|
|
52
|
+
display: flex;
|
|
53
|
+
gap: 4px;
|
|
54
|
+
border-radius: 11px;
|
|
55
|
+
background: #f5f7f7;
|
|
56
|
+
padding: 4px;
|
|
57
|
+
width: 100%;
|
|
58
|
+
max-width: 420px;
|
|
59
|
+
.ass_tab {
|
|
60
|
+
width: 200px;
|
|
61
|
+
height: 36px;
|
|
62
|
+
padding: 8px;
|
|
63
|
+
display: flex;
|
|
64
|
+
align-items: center;
|
|
65
|
+
justify-content: center;
|
|
66
|
+
border-radius: 7px;
|
|
67
|
+
background: #dfe5e5;
|
|
68
|
+
color: #7c8080;
|
|
69
|
+
text-align: center;
|
|
70
|
+
font-size: 16px;
|
|
71
|
+
font-weight: 400;
|
|
72
|
+
cursor: pointer;
|
|
73
|
+
width: 50%;
|
|
74
|
+
|
|
75
|
+
.not_ify {
|
|
76
|
+
border-radius: 49px;
|
|
77
|
+
background: #febf10;
|
|
78
|
+
padding: 6px 8px;
|
|
79
|
+
color: #ffffff;
|
|
80
|
+
font-size: 10px;
|
|
81
|
+
font-weight: 600;
|
|
82
|
+
margin-left: 15px;
|
|
83
|
+
width: 22px;
|
|
84
|
+
height: 22px;
|
|
85
|
+
display: flex;
|
|
86
|
+
align-items: center;
|
|
87
|
+
justify-content: center;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
&.active {
|
|
91
|
+
color: #fff;
|
|
92
|
+
background-color: #00c2c2;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
`;
|