Skip to content

Commit 3a763c8

Browse files
Merge pull request #2646 from KelvinTegelaar/dev
Dev to release
2 parents 6224b50 + 4da1071 commit 3a763c8

31 files changed

+2218
-266
lines changed

.github/workflows/dev_deploy.yml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,10 @@ on:
44
push:
55
branches:
66
- dev
7-
pull_request:
8-
types: [opened, synchronize, reopened, closed]
9-
branches:
10-
- dev
117

128
jobs:
139
build_and_deploy_job:
14-
if: github.event.repository.fork == false && github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
10+
if: github.event.repository.fork == false && github.event_name == 'push'
1511
runs-on: ubuntu-latest
1612
name: Build and Deploy Job
1713
steps:

.vscode/extensions.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"eg2.vscode-npm-script",
66
"christian-kohler.npm-intellisense",
77
"esbenp.prettier-vscode",
8-
"stylelint.vscode-stylelint"
8+
"stylelint.vscode-stylelint",
9+
"editorconfig.editorconfig"
910
]
1011
}

README.md

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,13 @@
11
![CyberDrain Light](github_assets/img/CIPP.png#gh-dark-mode-only)
22
![CyberDrain Dark](github_assets/img/CIPP-Light.png#gh-light-mode-only)
33

4-
<center><h1>Sponsored by</h1></center>
5-
<p align="center">
6-
7-
![OIT](github_assets/img/oitpsonsor_light.png)&nbsp;&nbsp;&nbsp;&nbsp;
8-
![Immybot](github_assets/img/Immybot.png)&nbsp;&nbsp;&nbsp;&nbsp;
9-
![NinjaOne](github_assets/img/NinjaOne-Light.png#gh-dark-mode-only)
10-
![NinjaOne](github_assets/img/NinjaOne-Dark.png#gh-light-mode-only)&nbsp;&nbsp;&nbsp;&nbsp;
11-
![Huntress](github_assets/img/Huntress.png)
12-
![HaloPSA](github_assets/img/halopsa-red-grey.svg)
13-
14-
</p>
15-
164
# What is this?
175

18-
The CyberDrain Improved Partner Portal is a portal to help manage administration for Microsoft Partners. The current Microsoft partner landscape makes it fairly hard to manage multi tenant situations, with loads of manual work. Microsoft Lighthouse might resolve this in the future but development of this is lagging far behind development of the current market for Microsoft Partners.
6+
The CyberDrain Improved Partner Portal is a portal to help manage administration for Microsoft Partners. The current Microsoft partner landscape makes it fairly hard to manage multi tenant situations, with loads of manual work. Microsoft Lighthouse might resolve this in the future but development of this is lagging far behind development of the current market for Microsoft Partners.
7+
This project is a way to help you with administration, with user management, and deploying your own preferred standards. It's not a replacement for security tools, or a way to cut costs on specific subscriptions. The tool should assist you in removing the gripes with standard partner management and save you several hours per engineer per month.
8+
For more information, we recommend checking out our website [here](https://cipp.app)
9+
For detailed documentation about features of CIPP, please check out our [documentation.](https://docs.cipp.app)
1910

20-
This project is a way to help you with administration, with user management, and deploying your own preferred standards. It's not a replacement for security tools, or a way to cut costs on specific subscriptions. The tool should assist you in removing the gripes with standard partner management and save you several hours per engineer per month.
11+
# Our sponsors
2112

22-
for more information, we recommend checking out our website [here](https://cipp.app)
13+
You can find our sponsors [here.](https://docs.cipp.app/#our-sponsors)

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cipp",
3-
"version": "5.9.3",
3+
"version": "6.0.0",
44
"description": "The CyberDrain Improved Partner Portal is a portal to help manage administration for Microsoft Partners.",
55
"homepage": "https://cipp.app/",
66
"bugs": {

public/version_latest.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
5.9.3
1+
6.0.0

src/_nav.jsx

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
faUserShield,
2020
faEnvelope,
2121
faToolbox,
22+
faDownload,
2223
} from '@fortawesome/free-solid-svg-icons'
2324

2425
const _nav = [
@@ -162,6 +163,11 @@ const _nav = [
162163
name: 'App Consent Requests',
163164
to: '/tenant/administration/app-consent-requests',
164165
},
166+
{
167+
component: CNavItem,
168+
name: 'Authentication Methods',
169+
to: '/tenant/administration/authentication-methods',
170+
},
165171
{
166172
component: CNavItem,
167173
name: 'Tenant Onboarding',
@@ -179,6 +185,25 @@ const _nav = [
179185
},
180186
],
181187
},
188+
{
189+
component: CNavGroup,
190+
name: 'Configuration Backup',
191+
section: 'Tenant Administration',
192+
to: '/cipp/gdap',
193+
icon: <FontAwesomeIcon icon={faDownload} className="nav-icon" />,
194+
items: [
195+
{
196+
component: CNavItem,
197+
name: 'Backup Wizard',
198+
to: '/tenant/backup/backup-wizard',
199+
},
200+
{
201+
component: CNavItem,
202+
name: 'Restore Wizard',
203+
to: '/tenant/backup/restore-wizard',
204+
},
205+
],
206+
},
182207
{
183208
component: CNavGroup,
184209
name: 'Tools',
@@ -608,6 +633,11 @@ const _nav = [
608633
name: 'Mailboxes',
609634
to: '/email/administration/mailboxes',
610635
},
636+
{
637+
component: CNavItem,
638+
name: 'Deleted Mailboxes',
639+
to: '/email/administration/deleted-mailboxes',
640+
},
611641
{
612642
component: CNavItem,
613643
name: 'Mailbox Rules',

src/components/contentcards/CippButtonCard.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ export default function CippButtonCard({
99
CardButton,
1010
children,
1111
isFetching,
12+
className = 'h-100',
1213
}) {
1314
return (
14-
<CCard className="h-100 mb-3">
15+
<CCard className={`${className} mb-3`}>
1516
<CCardHeader>
1617
<CCardTitle>
1718
{titleType === 'big' ? <h3 className="underline mb-3">{title}</h3> : title}
@@ -32,4 +33,5 @@ CippButtonCard.propTypes = {
3233
CardButton: PropTypes.element.isRequired,
3334
children: PropTypes.element.isRequired,
3435
isFetching: PropTypes.bool.isRequired,
36+
className: PropTypes.string,
3537
}

src/components/tables/CellBytes.jsx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import PropTypes from 'prop-types'
2+
3+
export function CellBytes({ cell }) {
4+
return (cell / 1024 ** 3).toFixed(2)
5+
}
6+
7+
CellBytes.propTypes = {
8+
propName: PropTypes.string,
9+
cell: PropTypes.object,
10+
}
11+
12+
export function CellBytesToPercentage({ row, value, dividedBy }) {
13+
return Math.round((row[value] / row[dividedBy]) * 100 * 10) / 10
14+
}
15+
16+
CellBytesToPercentage.propTypes = {
17+
propName: PropTypes.string,
18+
cell: PropTypes.object,
19+
}
20+
21+
export const cellBytesFormatter = () => (row, index, column, id) => {
22+
const cell = column.selector(row)
23+
return CellBytes({ cell })
24+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import PropTypes from 'prop-types'
2+
import CippCopyToClipboard from '../utilities/CippCopyToClipboard'
3+
4+
export function CellCopyButton({ cell }) {
5+
return <CippCopyToClipboard text={cell} />
6+
}
7+
8+
CellCopyButton.propTypes = {
9+
propName: PropTypes.string,
10+
cell: PropTypes.object,
11+
}
12+
13+
export const cellCopyButtonFormatter = () => (row, index, column, id) => {
14+
const cell = column.selector(row)
15+
return CellCopyButton({ cell })
16+
}

src/components/tables/CippTable.jsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -629,12 +629,14 @@ export default function CippTable({
629629
if (!disablePDFExport || !disableCSVExport) {
630630
const keys = []
631631
const exportFormatter = {}
632+
const exportFormatterArgs = {}
632633
columns.map((col) => {
633634
if (col.exportSelector) keys.push(col.exportSelector)
634635
if (col.exportFormatter) exportFormatter[col.exportSelector] = col.exportFormatter
636+
if (col.exportFormatterArgs)
637+
exportFormatterArgs[col.exportSelector] = col.exportFormatterArgs
635638
return null
636639
})
637-
638640
// Define the flatten function
639641
const flatten = (obj, prefix = '') => {
640642
if (obj === null) return {}
@@ -664,18 +666,18 @@ export default function CippTable({
664666
// Define the applyFormatter function
665667
const applyFormatter = (obj) => {
666668
return Object.keys(obj).reduce((acc, key) => {
669+
const formatterArgs = exportFormatterArgs[key]
667670
const formatter = exportFormatter[key]
668-
// Since the keys after flattening will be dot-separated, we need to adjust this to support nested keys if necessary.
669671
const keyParts = key.split('.')
670672
const finalKeyPart = keyParts[keyParts.length - 1]
671673
const formattedValue =
672-
typeof formatter === 'function' ? formatter({ cell: obj[key] }) : obj[key]
674+
typeof formatter === 'function'
675+
? formatter({ row: obj, cell: obj[key], ...formatterArgs })
676+
: obj[key]
673677
acc[key] = formattedValue
674678
return acc
675679
}, {})
676680
}
677-
678-
// Process exportData function
679681
const processExportData = (exportData, selectedColumns) => {
680682
//filter out the columns that are not selected via selectedColumns
681683
exportData = exportData.map((item) => {

0 commit comments

Comments
 (0)