Skip to content

Commit 7f1b403

Browse files
Merge pull request #857 from KelvinTegelaar/dev
Dev to release
2 parents 60e8fd6 + 185abb2 commit 7f1b403

23 files changed

+1821
-480
lines changed

package-lock.json

Lines changed: 157 additions & 255 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/version_latest.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.3.0
1+
2.4.0

src/_nav.js

Lines changed: 72 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import {
1515
faEnvelope,
1616
faWindowRestore,
1717
faUnlock,
18+
faKey,
19+
faBus,
1820
} from '@fortawesome/free-solid-svg-icons'
1921

2022
const _nav = [
@@ -133,11 +135,10 @@ const _nav = [
133135
name: 'Licence Report',
134136
to: '/tenant/administration/list-licenses',
135137
},
136-
137138
{
138139
component: CNavItem,
139-
name: 'Conditional Access Policies',
140-
to: '/tenant/administration/conditional-access-policies',
140+
name: 'Service Health',
141+
to: '/tenant/administration/service-health',
141142
},
142143
],
143144
},
@@ -175,6 +176,35 @@ const _nav = [
175176
},
176177
],
177178
},
179+
{
180+
component: CNavGroup,
181+
name: 'Conditional Access',
182+
section: 'Conditional Access',
183+
to: '/tenant/administration',
184+
icon: <FontAwesomeIcon icon={faKey} className="nav-icon" />,
185+
items: [
186+
{
187+
component: CNavItem,
188+
name: 'List Policies',
189+
to: '/tenant/conditional/list-policies',
190+
},
191+
{
192+
component: CNavItem,
193+
name: 'Deploy Conditional Access',
194+
to: '/tenant/conditional/deploy',
195+
},
196+
{
197+
component: CNavItem,
198+
name: 'Add Template',
199+
to: '/tenant/conditional/add-template',
200+
},
201+
{
202+
component: CNavItem,
203+
name: 'List Templates',
204+
to: '/tenant/conditional/list-template',
205+
},
206+
],
207+
},
178208
{
179209
component: CNavTitle,
180210
name: 'Security & Compliance',
@@ -392,6 +422,35 @@ const _nav = [
392422
},
393423
],
394424
},
425+
{
426+
component: CNavGroup,
427+
name: 'Transport Rules',
428+
section: 'Transport Rules',
429+
to: '/tenant/administration',
430+
icon: <FontAwesomeIcon icon={faBus} className="nav-icon" />,
431+
items: [
432+
{
433+
component: CNavItem,
434+
name: 'List Transport rules',
435+
to: '/email/transport/list-rules',
436+
},
437+
{
438+
component: CNavItem,
439+
name: 'Deploy Transport rule',
440+
to: '/email/transport/deploy-rules',
441+
},
442+
{
443+
component: CNavItem,
444+
name: 'Add Template',
445+
to: '/email/transport/add-template',
446+
},
447+
{
448+
component: CNavItem,
449+
name: 'List Templates',
450+
to: '/email/transport/list-templates',
451+
},
452+
],
453+
},
395454
{
396455
component: CNavGroup,
397456
name: 'Reports',
@@ -434,14 +493,19 @@ const _nav = [
434493
items: [
435494
{
436495
component: CNavItem,
437-
name: 'Documentation',
438-
href: 'https://cipp.app',
439-
target: '_blank',
496+
name: 'Settings',
497+
to: '/cipp/settings',
440498
},
441499
{
442500
component: CNavItem,
443-
name: 'Settings',
444-
to: '/cipp/settings',
501+
name: 'SAM Setup Wizard (β)',
502+
to: '/cipp/setup',
503+
},
504+
{
505+
component: CNavItem,
506+
name: 'Documentation',
507+
href: 'https://cipp.app',
508+
target: '_blank',
445509
},
446510
],
447511
},

src/adminRoutes.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import React from 'react'
22
const CIPPSettings = React.lazy(() => import('src/views/cipp/CIPPSettings'))
3+
const Setup = React.lazy(() => import('src/views/cipp/Setup'))
34
const ApplyStandard = React.lazy(() => import('src/views/tenant/standards/ApplyStandard'))
45

56
const adminRoutes = [
67
{ path: '/cipp', name: 'CIPP' },
78
{ path: '/cipp/cipp', name: 'CIPP' },
89
{ path: '/cipp/settings', name: 'Settings', component: CIPPSettings },
10+
{ path: '/cipp/setup', name: 'Setup', component: Setup },
11+
912
{ path: '/tenant/standards/apply-standard', name: 'Apply Standard', component: ApplyStandard },
1013
]
1114

src/components/utilities/CippActionsOffcanvas.js

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,49 @@ import { CCallout, CListGroup, CListGroupItem, COffcanvasTitle, CSpinner } from
44
import { CippOffcanvas, ModalService } from 'src/components/utilities'
55
import { CippOffcanvasPropTypes } from 'src/components/utilities/CippOffcanvas'
66
import { CippOffcanvasTable } from 'src/components/tables'
7-
import { useLazyGenericGetRequestQuery } from 'src/store/api/app'
7+
import { useLazyGenericGetRequestQuery, useLazyGenericPostRequestQuery } from 'src/store/api/app'
88
import { useNavigate } from 'react-router-dom'
99

1010
export default function CippActionsOffcanvas(props) {
1111
const [genericGetRequest, getResults] = useLazyGenericGetRequestQuery()
12+
const [genericPostRequest, postResults] = useLazyGenericPostRequestQuery()
13+
1214
const handleLink = useNavigate()
1315
const handleExternalLink = (link) => {
1416
window.open(link, '_blank')
1517
}
16-
const handleModal = (modalMessage, modalUrl) => {
17-
ModalService.confirm({
18-
body: (
19-
<div style={{ overflow: 'visible' }}>
20-
<div>{modalMessage}</div>
21-
</div>
22-
),
23-
title: 'Confirm',
24-
onConfirm: () => genericGetRequest({ path: modalUrl }),
25-
})
18+
const handleModal = (modalMessage, modalUrl, modalType = 'GET', modalBody) => {
19+
if (modalType === 'GET') {
20+
ModalService.confirm({
21+
body: (
22+
<div style={{ overflow: 'visible' }}>
23+
<div>{modalMessage}</div>
24+
</div>
25+
),
26+
title: 'Confirm',
27+
onConfirm: () => genericGetRequest({ path: modalUrl }),
28+
})
29+
} else {
30+
ModalService.confirm({
31+
body: (
32+
<div style={{ overflow: 'visible' }}>
33+
<div>{modalMessage}</div>
34+
</div>
35+
),
36+
title: 'Confirm',
37+
onConfirm: () => genericPostRequest({ path: modalUrl, values: modalBody }),
38+
})
39+
}
2640
}
27-
const handleOnClick = (link, modal, modalMessage, modalUrl, external) => {
41+
const handleOnClick = (link, modal, modalMessage, modalUrl, external, modalType, modalBody) => {
2842
if (link) {
2943
if (external) {
3044
handleExternalLink(link)
3145
} else {
3246
handleLink(link)
3347
}
3448
} else if (modal) {
35-
handleModal(modalMessage, modalUrl)
49+
handleModal(modalMessage, modalUrl, modalType, modalBody)
3650
}
3751
}
3852
const extendedInfoContent = <CippOffcanvasTable rows={props.extendedInfo} guid={props.id} />
@@ -48,6 +62,8 @@ export default function CippActionsOffcanvas(props) {
4862
action.modalMessage,
4963
action.modalUrl,
5064
action.external,
65+
action.modalType,
66+
action.modalBody,
5167
)
5268
}
5369
key={index}
@@ -69,6 +85,15 @@ export default function CippActionsOffcanvas(props) {
6985
<CSpinner>Loading</CSpinner>
7086
</CCallout>
7187
)}
88+
{postResults.isFetching && (
89+
<CCallout color="info">
90+
<CSpinner>Loading</CSpinner>
91+
</CCallout>
92+
)}
93+
{postResults.isSuccess && <CCallout color="info">{postResults.data?.Results}</CCallout>}
94+
{postResults.isError && (
95+
<CCallout color="danger">Could not connect to API: {postResults.error.message}</CCallout>
96+
)}
7297
{getResults.isSuccess && <CCallout color="info">{getResults.data?.Results}</CCallout>}
7398
{getResults.isError && (
7499
<CCallout color="danger">Could not connect to API: {getResults.error.message}</CCallout>
@@ -97,6 +122,8 @@ const CippActionsOffcanvasPropTypes = {
97122
onClick: PropTypes.func,
98123
modal: PropTypes.bool,
99124
modalUrl: PropTypes.string,
125+
modalBody: PropTypes.string,
126+
modalType: PropTypes.string,
100127
modalMessage: PropTypes.string,
101128
external: PropTypes.bool,
102129
}),

src/routes.js

Lines changed: 64 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,17 @@ const GraphExplorer = React.lazy(() => import('src/views/tenant/administration/G
2424

2525
const Domains = React.lazy(() => import('src/views/tenant/administration/Domains'))
2626
const EditTenant = React.lazy(() => import('src/views/tenant/administration/EditTenant'))
27-
const ConditionalAccess = React.lazy(() =>
28-
import('src/views/tenant/administration/ConditionalAccess'),
27+
const ConditionalAccess = React.lazy(() => import('src/views/tenant/conditional/ConditionalAccess'))
28+
const ListConditionalTemplates = React.lazy(() =>
29+
import('src/views/tenant/conditional/ListCATemplates'),
2930
)
31+
32+
const AddConditionalTemplate = React.lazy(() =>
33+
import('src/views/tenant/conditional/AddCATemplate'),
34+
)
35+
36+
const DeployConditional = React.lazy(() => import('src/views/tenant/conditional/DeployCA'))
37+
3038
const ListLicences = React.lazy(() => import('src/views/tenant/administration/ListLicences'))
3139

3240
const BasicAuthReport = React.lazy(() => import('src/views/identity/reports/BasicAuthReport'))
@@ -123,8 +131,21 @@ const MessageTrace = React.lazy(() => import('src/views/email-exchange/reports/M
123131
const PhishingPoliciesList = React.lazy(() =>
124132
import('src/views/email-exchange/reports/PhishingPoliciesList'),
125133
)
134+
const TransportRulesList = React.lazy(() =>
135+
import('src/views/email-exchange/transport/TransportRules'),
136+
)
137+
const TransportTemplate = React.lazy(() =>
138+
import('src/views/email-exchange/transport/ListTransportTemplates'),
139+
)
140+
const AddTransportTemplate = React.lazy(() =>
141+
import('src/views/email-exchange/transport/AddTransportTemplate'),
142+
)
143+
const TransportDeploy = React.lazy(() =>
144+
import('src/views/email-exchange/transport/DeployTransport'),
145+
)
126146
const SecurityComplianceAlerts = React.lazy(() => import('src/views/security/reports/ListAlerts'))
127147
const License = React.lazy(() => import('src/views/pages/license/License'))
148+
const ServiceHealth = React.lazy(() => import('src/views/tenant/administration/ServiceHealth'))
128149

129150
const routes = [
130151
// { path: '/', exact: true, name: 'Home' },
@@ -175,12 +196,31 @@ const routes = [
175196
name: 'Graph Explorer',
176197
component: GraphExplorer,
177198
},
178-
179199
{
180-
path: '/tenant/administration/conditional-access-policies',
200+
path: '/tenant/administration/service-health',
201+
name: 'Service Health',
202+
component: ServiceHealth,
203+
},
204+
{
205+
path: '/tenant/conditional/list-policies',
181206
name: 'Conditional Access',
182207
component: ConditionalAccess,
183208
},
209+
{
210+
path: '/tenant/conditional/deploy',
211+
name: 'Deploy Conditional Access',
212+
component: DeployConditional,
213+
},
214+
{
215+
path: '/tenant/conditional/list-template',
216+
name: 'Conditional Access Templates',
217+
component: ListConditionalTemplates,
218+
},
219+
{
220+
path: '/tenant/conditional/add-template',
221+
name: 'Conditional Access add Temmplate',
222+
component: AddConditionalTemplate,
223+
},
184224
{
185225
path: '/tenant/administration/list-licenses',
186226
name: 'List Licenses',
@@ -289,6 +329,26 @@ const routes = [
289329
{ name: 'Email & Exchange', path: '/email' },
290330
{ name: 'Email Administration', path: '/email/administration' },
291331
{ name: 'List Contacts', path: '/email/administration/contacts', component: ContactsList },
332+
{
333+
path: '/email/transport/list-rules',
334+
name: 'List Transport rules',
335+
component: TransportRulesList,
336+
},
337+
{
338+
path: '/email/transport/deploy-rules',
339+
name: 'Deploy Transport rule',
340+
component: TransportDeploy,
341+
},
342+
{
343+
path: '/email/transport/list-templates',
344+
name: 'Transport Rule Templates',
345+
component: TransportTemplate,
346+
},
347+
{
348+
path: '/email/transport/add-template',
349+
name: 'Transport Rule add Temmplate',
350+
component: AddTransportTemplate,
351+
},
292352
{
293353
name: 'Edit Mailbox Permissions',
294354
path: '/email/administration/edit-mailbox-permissions',

0 commit comments

Comments
 (0)