Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] main from KelvinTegelaar:main #14

Merged
merged 88 commits into from
Jul 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
b85450d
Merge pull request #99 from KelvinTegelaar/dev
BNWEIN Jun 22, 2024
012ce84
Merge branch 'KelvinTegelaar:dev' into dev
BNWEIN Jun 23, 2024
b486515
EditGroupChanges
BNWEIN Jun 23, 2024
bf43f64
Litigation Hold Standard
chase-vgo Jun 25, 2024
fcf1cb6
Merge pull request #101 from KelvinTegelaar/dev
BNWEIN Jun 26, 2024
17432bf
Update EditGroup.jsx
BNWEIN Jun 26, 2024
7f732ff
Merge pull request #49 from KelvinTegelaar/dev
kris6673 Jun 26, 2024
b88b6cd
Merge branch 'KelvinTegelaar:dev' into dev
BNWEIN Jun 26, 2024
5298a92
Update Users.jsx
BNWEIN Jun 27, 2024
764f027
Added Soft Deleted Mailbox Page
BNWEIN Jun 27, 2024
ef0dfb7
Update DeletedMailboxes.jsx
BNWEIN Jun 28, 2024
ceef18d
New UserReportDestinationEmail standard
kris6673 Jun 28, 2024
4c7510b
Remove word
kris6673 Jun 28, 2024
5196254
Update readme
kris6673 Jun 28, 2024
b0bc56f
Add back a link to sponsors in the docs site
kris6673 Jun 28, 2024
8d67e97
Merge pull request #2612 from kris6673/userreportsentto
KelvinTegelaar Jun 28, 2024
e4b79a7
Merge pull request #2608 from BNWEIN/dev
KelvinTegelaar Jun 28, 2024
21ef595
Merge pull request #2599 from chase-vgo/dev
KelvinTegelaar Jun 28, 2024
d1f84b3
Updated Anti-Phishing Policy Standards for more granular configuration
cipptesting Jun 24, 2024
9cfe4c2
Updated standards.json based on feedback
cipptesting Jun 28, 2024
d6633bc
Merge pull request #2594 from cipptesting/dev
KelvinTegelaar Jun 28, 2024
7ec9a65
backend hosted test
KelvinTegelaar Jun 28, 2024
c51882e
extensions disable
KelvinTegelaar Jun 28, 2024
7449552
extensions update
KelvinTegelaar Jun 28, 2024
58a68bd
Added Authentication Methods
BNWEIN Jul 1, 2024
fabdeff
Added Offcanvas actions to Auth Methods page, and added Scripted Aler…
BNWEIN Jul 2, 2024
64e93a0
Merge pull request #52 from KelvinTegelaar/dev
kris6673 Jul 2, 2024
6a68692
Add all new needed properties and fix a lot of PS commands and genera…
kris6673 Jul 2, 2024
11901fa
Merge pull request #2621 from kris6673/auto-docs-standards
KelvinTegelaar Jul 3, 2024
ab83f44
Merge pull request #2618 from BNWEIN/dev
KelvinTegelaar Jul 3, 2024
7397b24
Adding self-service license management Standard
Jul 3, 2024
d30452b
Extension tweaks
JohnDuprey Jul 3, 2024
11f3320
Merge remote-tracking branch 'upstream/dev' into dev
JohnDuprey Jul 3, 2024
632eb02
Merge pull request #2629 from JohnDuprey/dev
JohnDuprey Jul 3, 2024
109692d
Update ExtensionMappings.jsx
JohnDuprey Jul 3, 2024
811e710
Merge pull request #2630 from JohnDuprey/dev
JohnDuprey Jul 3, 2024
4c0e474
Cleanup comments, add refresh
JohnDuprey Jul 3, 2024
ea1a9dd
Merge pull request #53 from KelvinTegelaar/dev
kris6673 Jul 4, 2024
f3e0e35
added backups
KelvinTegelaar Jul 4, 2024
5b0b3ea
improvements createbackup
KelvinTegelaar Jul 4, 2024
bf93698
Merge pull request #2626 from BNWEIN/EditGroupChanges
KelvinTegelaar Jul 5, 2024
9eca131
Merge pull request #2628 from rvdwegen/dev
KelvinTegelaar Jul 5, 2024
7fd3128
fixes external sender
KelvinTegelaar Jul 5, 2024
0c0b5d8
added cell copy button
KelvinTegelaar Jul 5, 2024
6b0d25f
add sharepoint list stuff
KelvinTegelaar Jul 5, 2024
ac76cb8
updated list of offboarding items
KelvinTegelaar Jul 5, 2024
f3c00e3
Merge remote-tracking branch 'upstream/dev' into dev
JohnDuprey Jul 5, 2024
018b0d0
Fix automapping
JohnDuprey Jul 5, 2024
335b2d1
Merge pull request #2635 from JohnDuprey/dev
JohnDuprey Jul 5, 2024
5677309
Update recommended extensions and dev workflow
JohnDuprey Jul 5, 2024
1723b26
Merge pull request #2636 from JohnDuprey/dev
JohnDuprey Jul 5, 2024
340d09b
convert to string for backup tasks
KelvinTegelaar Jul 5, 2024
8336548
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP into dev
KelvinTegelaar Jul 5, 2024
1da1cff
fixes backup list
KelvinTegelaar Jul 5, 2024
75d096e
Improve UI for extensions
JohnDuprey Jul 6, 2024
4649af9
Extension layout fixes
JohnDuprey Jul 6, 2024
3b3b758
Merge pull request #2637 from JohnDuprey/dev
JohnDuprey Jul 6, 2024
a49cd4d
Added removeCalendarInvites
chase-vgo Jul 6, 2024
730dcc5
allow app deployment via standards
KelvinTegelaar Jul 7, 2024
130237c
Added SPAzureB2B standard
OfficialEsco Jul 5, 2024
c12f31e
Added SPDirectSharing standard
OfficialEsco Jul 5, 2024
bab7f3e
Merge pull request #2638 from chase-vgo/dev
KelvinTegelaar Jul 8, 2024
c178380
Added SPExternalUserExpiration Standard
OfficialEsco Jul 8, 2024
e1e1a5a
Added SPEmailAttestation standard
OfficialEsco Jul 8, 2024
2ab99a0
Added SPDisallowInfectedFiles standard
OfficialEsco Jul 8, 2024
924d661
added task to restore
KelvinTegelaar Jul 8, 2024
2c4ef81
restore wizard updates
KelvinTegelaar Jul 8, 2024
a8a8536
Merge pull request #54 from KelvinTegelaar/dev
kris6673 Jul 8, 2024
6a3dc68
updated backup to allot alert backups
KelvinTegelaar Jul 9, 2024
9f1de9c
finished restore settings
KelvinTegelaar Jul 9, 2024
f836fd8
do not allow duplicate backups to be set.
KelvinTegelaar Jul 9, 2024
8ec1c9e
fixes to auditlog schema
KelvinTegelaar Jul 9, 2024
674131c
fixes issue with duplicate group mappings.
KelvinTegelaar Jul 9, 2024
e77f40d
Merge pull request #2640 from Ren-Roros-Digital/SPOStandards
KelvinTegelaar Jul 9, 2024
b2b03e9
Merge branch 'KelvinTegelaar:dev' into dev
kris6673 Jul 9, 2024
5d9c4f1
Add callout for force sync
JohnDuprey Jul 9, 2024
b30405d
Merge remote-tracking branch 'upstream/dev' into dev
JohnDuprey Jul 9, 2024
7a60608
Merge pull request #2644 from JohnDuprey/dev
JohnDuprey Jul 9, 2024
2b5d0b3
added ability to use exportformatters with parameters
KelvinTegelaar Jul 9, 2024
66a298d
Improve DeletedUserRentention standard
kris6673 Jul 9, 2024
57aba41
Merge pull request #2645 from kris6673/dev
KelvinTegelaar Jul 9, 2024
4da1071
update version
KelvinTegelaar Jul 9, 2024
3a763c8
Merge pull request #2646 from KelvinTegelaar/dev
KelvinTegelaar Jul 9, 2024
31a9db1
Fix manual tenant mapping
JohnDuprey Jul 9, 2024
abb2f06
Merge pull request #2647 from JohnDuprey/dev
JohnDuprey Jul 9, 2024
95db774
up version
JohnDuprey Jul 9, 2024
b3bbd4b
Merge pull request #2648 from JohnDuprey/dev
JohnDuprey Jul 9, 2024
961f085
Merge pull request #2649 from KelvinTegelaar/dev
JohnDuprey Jul 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions .github/workflows/dev_deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,10 @@ on:
push:
branches:
- dev
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- dev

jobs:
build_and_deploy_job:
if: github.event.repository.fork == false && github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
if: github.event.repository.fork == false && github.event_name == 'push'
runs-on: ubuntu-latest
name: Build and Deploy Job
steps:
Expand Down
3 changes: 2 additions & 1 deletion .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"eg2.vscode-npm-script",
"christian-kohler.npm-intellisense",
"esbenp.prettier-vscode",
"stylelint.vscode-stylelint"
"stylelint.vscode-stylelint",
"editorconfig.editorconfig"
]
}
21 changes: 6 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,13 @@
![CyberDrain Light](github_assets/img/CIPP.png#gh-dark-mode-only)
![CyberDrain Dark](github_assets/img/CIPP-Light.png#gh-light-mode-only)

<center><h1>Sponsored by</h1></center>
<p align="center">

![OIT](github_assets/img/oitpsonsor_light.png)&nbsp;&nbsp;&nbsp;&nbsp;
![Immybot](github_assets/img/Immybot.png)&nbsp;&nbsp;&nbsp;&nbsp;
![NinjaOne](github_assets/img/NinjaOne-Light.png#gh-dark-mode-only)
![NinjaOne](github_assets/img/NinjaOne-Dark.png#gh-light-mode-only)&nbsp;&nbsp;&nbsp;&nbsp;
![Huntress](github_assets/img/Huntress.png)
![HaloPSA](github_assets/img/halopsa-red-grey.svg)

</p>

# What is this?

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.
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.
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.
For more information, we recommend checking out our website [here](https://cipp.app)
For detailed documentation about features of CIPP, please check out our [documentation.](https://docs.cipp.app)

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.
# Our sponsors

for more information, we recommend checking out our website [here](https://cipp.app)
You can find our sponsors [here.](https://docs.cipp.app/#our-sponsors)
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cipp",
"version": "5.9.3",
"version": "6.0.1",
"description": "The CyberDrain Improved Partner Portal is a portal to help manage administration for Microsoft Partners.",
"homepage": "https://cipp.app/",
"bugs": {
Expand Down
2 changes: 1 addition & 1 deletion public/version_latest.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5.9.3
6.0.1
30 changes: 30 additions & 0 deletions src/_nav.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
faUserShield,
faEnvelope,
faToolbox,
faDownload,
} from '@fortawesome/free-solid-svg-icons'

const _nav = [
Expand Down Expand Up @@ -162,6 +163,11 @@ const _nav = [
name: 'App Consent Requests',
to: '/tenant/administration/app-consent-requests',
},
{
component: CNavItem,
name: 'Authentication Methods',
to: '/tenant/administration/authentication-methods',
},
{
component: CNavItem,
name: 'Tenant Onboarding',
Expand All @@ -179,6 +185,25 @@ const _nav = [
},
],
},
{
component: CNavGroup,
name: 'Configuration Backup',
section: 'Tenant Administration',
to: '/cipp/gdap',
icon: <FontAwesomeIcon icon={faDownload} className="nav-icon" />,
items: [
{
component: CNavItem,
name: 'Backup Wizard',
to: '/tenant/backup/backup-wizard',
},
{
component: CNavItem,
name: 'Restore Wizard',
to: '/tenant/backup/restore-wizard',
},
],
},
{
component: CNavGroup,
name: 'Tools',
Expand Down Expand Up @@ -608,6 +633,11 @@ const _nav = [
name: 'Mailboxes',
to: '/email/administration/mailboxes',
},
{
component: CNavItem,
name: 'Deleted Mailboxes',
to: '/email/administration/deleted-mailboxes',
},
{
component: CNavItem,
name: 'Mailbox Rules',
Expand Down
4 changes: 3 additions & 1 deletion src/components/contentcards/CippButtonCard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ export default function CippButtonCard({
CardButton,
children,
isFetching,
className = 'h-100',
}) {
return (
<CCard className="h-100 mb-3">
<CCard className={`${className} mb-3`}>
<CCardHeader>
<CCardTitle>
{titleType === 'big' ? <h3 className="underline mb-3">{title}</h3> : title}
Expand All @@ -32,4 +33,5 @@ CippButtonCard.propTypes = {
CardButton: PropTypes.element.isRequired,
children: PropTypes.element.isRequired,
isFetching: PropTypes.bool.isRequired,
className: PropTypes.string,
}
24 changes: 24 additions & 0 deletions src/components/tables/CellBytes.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import PropTypes from 'prop-types'

export function CellBytes({ cell }) {
return (cell / 1024 ** 3).toFixed(2)
}

CellBytes.propTypes = {
propName: PropTypes.string,
cell: PropTypes.object,
}

export function CellBytesToPercentage({ row, value, dividedBy }) {
return Math.round((row[value] / row[dividedBy]) * 100 * 10) / 10
}

CellBytesToPercentage.propTypes = {
propName: PropTypes.string,
cell: PropTypes.object,
}

export const cellBytesFormatter = () => (row, index, column, id) => {
const cell = column.selector(row)
return CellBytes({ cell })
}
16 changes: 16 additions & 0 deletions src/components/tables/CellCopyButton.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import PropTypes from 'prop-types'
import CippCopyToClipboard from '../utilities/CippCopyToClipboard'

export function CellCopyButton({ cell }) {
return <CippCopyToClipboard text={cell} />
}

CellCopyButton.propTypes = {
propName: PropTypes.string,
cell: PropTypes.object,
}

export const cellCopyButtonFormatter = () => (row, index, column, id) => {
const cell = column.selector(row)
return CellCopyButton({ cell })
}
12 changes: 7 additions & 5 deletions src/components/tables/CippTable.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -629,12 +629,14 @@ export default function CippTable({
if (!disablePDFExport || !disableCSVExport) {
const keys = []
const exportFormatter = {}
const exportFormatterArgs = {}
columns.map((col) => {
if (col.exportSelector) keys.push(col.exportSelector)
if (col.exportFormatter) exportFormatter[col.exportSelector] = col.exportFormatter
if (col.exportFormatterArgs)
exportFormatterArgs[col.exportSelector] = col.exportFormatterArgs
return null
})

// Define the flatten function
const flatten = (obj, prefix = '') => {
if (obj === null) return {}
Expand Down Expand Up @@ -664,18 +666,18 @@ export default function CippTable({
// Define the applyFormatter function
const applyFormatter = (obj) => {
return Object.keys(obj).reduce((acc, key) => {
const formatterArgs = exportFormatterArgs[key]
const formatter = exportFormatter[key]
// Since the keys after flattening will be dot-separated, we need to adjust this to support nested keys if necessary.
const keyParts = key.split('.')
const finalKeyPart = keyParts[keyParts.length - 1]
const formattedValue =
typeof formatter === 'function' ? formatter({ cell: obj[key] }) : obj[key]
typeof formatter === 'function'
? formatter({ row: obj, cell: obj[key], ...formatterArgs })
: obj[key]
acc[key] = formattedValue
return acc
}, {})
}

// Process exportData function
const processExportData = (exportData, selectedColumns) => {
//filter out the columns that are not selected via selectedColumns
exportData = exportData.map((item) => {
Expand Down
8 changes: 4 additions & 4 deletions src/data/AuditLogSchema.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,12 @@
},
"List:Operation": [
{ "value": "UserLoggedIn", "name": "A user logged in" },
{ "value": "accessed mailbox items", "name": "accessed mailbox items" },
{ "value": "mailitemsaccessed", "name": "accessed mailbox items" },
{ "value": "add delegation entry.", "name": "added delegation entry" },
{ "value": "add domain to company.", "name": "added domain to company" },
{ "value": "add group.", "name": "added group" },
{ "value": "add member to group.", "name": "added member to group" },
{ "value": "add mailboxpermission", "name": "added delegate mailbox permissions" },
{ "value": "add-mailboxpermission", "name": "added delegate mailbox permissions" },
{ "value": "add member to role.", "name": "added member to role" },
{ "value": "add partner to company.", "name": "added a partner to the directory" },
{ "value": "add service principal.", "name": "added service principal" },
Expand Down Expand Up @@ -111,7 +111,7 @@
"value": "remove service principal credentials.",
"name": "removed credentials from a service principal"
},
{ "value": "remove mailboxpermission", "name": "removed delegate mailbox permissions" },
{ "value": "remove-mailboxpermission", "name": "removed delegate mailbox permissions" },
{ "value": "remove member from role.", "name": "removed a user from a directory role" },
{ "value": "remove partner from company.", "name": "removed a partner from the directory" },
{ "value": "removefolderpermissions", "name": "removed permissions from folder" },
Expand All @@ -132,7 +132,7 @@
"value": "set force change user password.",
"name": "set property that forces user to change password"
},
{ "value": "set inboxrule", "name": "modified inbox rule from outlook web app" },
{ "value": "set-inboxrule", "name": "modified inbox rule from outlook web app" },
{ "value": "set license properties.", "name": "set license properties" },
{ "value": "set password policy.", "name": "set password policy" },
{ "value": "softdelete", "name": "deleted messages from deleted items folder" },
Expand Down
67 changes: 56 additions & 11 deletions src/data/Extensions.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
[
{
"name": "CIPP-API Integration",
"name": "CIPP-API",
"type": "CIPP-API",
"cat": "API",
"forceSyncButton": false,
"disableWhenhosted": true,
"helpText": "This integration allows you to enable CIPP-API access outside of CIPP. Requires Global Administrator permissions inside your tenant for activation of the API. The API credentials will only be shown once.",
"SettingOptions": [
{
Expand All @@ -20,7 +21,7 @@
"mappingRequired": false
},
{
"name": "Gradient Integration",
"name": "Gradient",
"type": "Gradient",
"cat": "Billing & Invoicing",
"forceSyncButton": true,
Expand Down Expand Up @@ -54,7 +55,7 @@
"mappingRequired": false
},
{
"name": "Halo PSA Ticketing Integration",
"name": "Halo PSA Ticketing",
"type": "HaloPSA",
"cat": "Ticketing",
"forceSyncButton": false,
Expand Down Expand Up @@ -111,7 +112,7 @@
"mappingRequired": true
},
{
"name": "NinjaOne Integration",
"name": "NinjaOne",
"type": "NinjaOne",
"cat": "Documentation & Monitoring",
"forceSyncButton": true,
Expand All @@ -121,7 +122,7 @@
"type": "input",
"fieldtype": "input",
"name": "NinjaOne.Instance",
"label": "Please enter your NinjaOne Instance",
"label": "Please enter your NinjaOne Instance hostname",
"placeholder": "app.ninjarmm.com, eu.ninjarmm.com, oc.ninjarmm.com, ca.ninjarmm.com, us2.ninjarmm.com"
},
{
Expand All @@ -140,26 +141,70 @@
},
{
"type": "checkbox",
"name": "NinjaOne.UserDocumentsEnabled",
"label": "Synchronize Detailed User Information (Requires NinjaOne Documentation)"
"name": "NinjaOne.LicenseDocumentsEnabled",
"label": "Sync Licenses (Requires NinjaOne Documentation)"
},
{
"type": "checkbox",
"name": "NinjaOne.LicenseDocumentsEnabled",
"label": "Synchronize Detailed License Information (Requires NinjaOne Documentation)"
"name": "NinjaOne.UserDocumentsEnabled",
"label": "Sync Users (Requires NinjaOne Documentation)"
},
{
"type": "checkbox",
"name": "NinjaOne.LicensedOnly",
"label": "Only Synchronize Licensed Users"
"label": "Only Sync Licensed Users (Requires NinjaOne Documentation)"
},
{
"type": "checkbox",
"name": "NinjaOne.Enabled",
"label": "Enable Integration"
}
],
"mappingRequired": true
"mappingRequired": true,
"fieldMapping": true,
"autoMapSyncApi": true,
"showSyncButton": true
},
{
"name": "Hudu",
"type": "Hudu",
"cat": "Documentation",
"forceSyncButton": true,
"helpText": "This integration allows you to populate custom asset layouts with Tenant information, monitor device compliance state, document other items and generate relationships inside Hudu.",
"SettingOptions": [
{
"type": "input",
"fieldtype": "input",
"name": "Hudu.BaseUrl",
"label": "Please enter your Hudu URL",
"placeholder": "https://yourcompany.huducloud.com"
},
{
"type": "input",
"fieldtype": "password",
"name": "Hudu.APIKey",
"label": "Hudu API Key",
"placeholder": "Enter your Hudu API Key"
},
{
"type": "checkbox",
"name": "Hudu.CreateMissingUsers",
"label": "Create missing users in Hudu"
},
{
"type": "checkbox",
"name": "Hudu.CreateMissingDevices",
"label": "Create missing devices in Hudu"
},
{
"type": "checkbox",
"name": "Hudu.Enabled",
"label": "Enable Integration"
}
],
"mappingRequired": true,
"fieldMapping": true,
"showSyncButton": true
},
{
"name": "PasswordPusher",
Expand Down
7 changes: 6 additions & 1 deletion src/data/alerts.json
Original file line number Diff line number Diff line change
Expand Up @@ -89,5 +89,10 @@
"name": "DepTokenExpiry",
"label": "Alert on expiring DEP tokens",
"recommendedRunInterval": "1d"
},
{
"name": "SoftDeletedMailboxes",
"label": "Alert on soft deleted mailboxes",
"recommendedRunInterval": "1d"
}
]
]
Loading