Skip to content

Update Users.jsx #2608

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

Merged
merged 7 commits into from
Jun 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 5 additions & 0 deletions src/_nav.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -608,6 +608,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
3 changes: 2 additions & 1 deletion src/importsMap.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,8 @@ import React from 'react'
"/email/administration/edit-calendar-permissions": React.lazy(() => import('./views/email-exchange/administration/EditCalendarPermissions')),
"/email/administration/view-mobile-devices": React.lazy(() => import('./views/email-exchange/administration/ViewMobileDevices')),
"/email/administration/edit-contact": React.lazy(() => import('./views/email-exchange/administration/EditContact')),
"/email/administration/mailboxes": React.lazy(() => import('./views/email-exchange/administration/MailboxesList')),
"/email/administration/mailboxes": React.lazy(() => import('./views/email-exchange/administration/MailboxesList')),
"/email/administration/deleted-mailboxes": React.lazy(() => import('./views/email-exchange/administration/DeletedMailboxes')),
"/email/administration/mailbox-rules": React.lazy(() => import('./views/email-exchange/administration/MailboxRuleList')),
"/email/administration/Quarantine": React.lazy(() => import('./views/email-exchange/administration/QuarantineList')),
"/email/administration/tenant-allow-block-lists": React.lazy(() => import('./views/email-exchange/administration/ListTenantAllowBlockList')),
Expand Down
6 changes: 6 additions & 0 deletions src/routes.json
Original file line number Diff line number Diff line change
Expand Up @@ -786,6 +786,12 @@
"component": "views/email-exchange/administration/MailboxesList",
"allowedRoles": ["admin", "editor", "readonly"]
},
{
"name": "Deleted Mailboxes",
"path": "/email/administration/deleted-mailboxes",
"component": "views/email-exchange/administration/DeletedMailboxes",
"allowedRoles": ["admin", "editor", "readonly"]
},
{
"name": "List Mailbox Rules",
"path": "/email/administration/mailbox-rules",
Expand Down
159 changes: 159 additions & 0 deletions src/views/email-exchange/administration/DeletedMailboxes.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
import React, { useState } from 'react'
import { CButton } from '@coreui/react'
import { useSelector } from 'react-redux'
import { faEllipsisV } from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { cellBooleanFormatter } from 'src/components/tables'
import { CippPageList } from 'src/components/layout'
import { TitleButton } from 'src/components/buttons'
import { CippActionsOffcanvas } from 'src/components/utilities'

const Offcanvas = (row, rowIndex, formatExtraData) => {
const tenant = useSelector((state) => state.app.currentTenant)
const [ocVisible, setOCVisible] = useState(false)

const now = new Date() // Get the current date and time
const requestName = `${row.UPN}-${String(now.getDate()).padStart(2, '0')}-${String(
now.getMonth() + 1,
).padStart(2, '0')}-${now.getFullYear()}-${String(now.getHours()).padStart(2, '0')}${String(
now.getMinutes(),
).padStart(2, '0')}`

return (
<>
<CButton size="sm" color="link" onClick={() => setOCVisible(true)}>
<FontAwesomeIcon icon={faEllipsisV} />
</CButton>
<CippActionsOffcanvas
title="Extended Information"
extendedInfo={[
{ label: 'Display Name', value: `${row.displayName}` },
{ label: 'UPN', value: `${row.UPN}` },
{ label: 'Primary SMTP Address', value: `${row.primarySmtpAddress}` },
{ label: 'Recipient Type', value: `${row.recipientType}` },
{ label: 'Recipient Type Details', value: `${row.recipientTypeDetails}` },
{ label: 'Additional Email Addresses', value: `${row.AdditionalEmailAddresses}` },
{ label: 'Exchange Guid', value: `${row.ExchangeGuid}` },
{ label: 'Archive Guid', value: `${row.ArchiveGuid}` },
{ label: 'Id', value: `${row.Id}` },
{ label: 'Date Deleted', value: `${row.WhenSoftDeleted}` },
]}
actions={[
{
label: 'Restore Mailbox',
color: 'info',
modal: true,
modalType: 'POST',
modalBody: {
SourceMailbox: row.UPN,
TenantFilter: tenant.defaultDomainName,
RequestName: requestName,
},
modalUrl: `/api/ExecMailboxRestore`,
modalMessage: 'Select the mailbox to restore to',
modalDropdown: {
url: `/api/ListMailboxes?TenantFilter=${tenant.defaultDomainName}`,
labelField: 'UPN',
valueField: 'UPN',
},
},
]}
placement="end"
visible={ocVisible}
id={row.id}
hideFunction={() => setOCVisible(false)}
/>
</>
)
}

const columns = [
{
name: 'Display Name',
selector: (row) => row['displayName'],
sortable: true,
exportSelector: 'displayName',
},
{
name: 'User Principal Name',
selector: (row) => row['UPN'],
sortable: true,
exportSelector: 'UPN',
minWidth: '350px',
},
{
name: 'Primary SMTP Address',
selector: (row) => row['primarySmtpAddress'],
sortable: true,
exportSelector: 'primarySmtpAddress',
minWidth: '350px',
},
{
name: 'Date Deleted',
selector: (row) => row['WhenSoftDeleted'],
sortable: true,
exportSelector: 'WhenSoftDeleted',
},
{
name: 'Recipient Type',
selector: (row) => row['recipientType'],
omit: true,
exportSelector: 'recipientType',
},
{
name: 'Recipient Type Details',
selector: (row) => row['recipientTypeDetails'],
omit: true,
exportSelector: 'recipientTypeDetails',
},
{
name: 'Additional Email Addresses',
selector: (row) => row['AdditionalEmailAddresses'],
omit: true,
exportSelector: 'AdditionalEmailAddresses',
},
{
name: 'Exchange Guid',
selector: (row) => row['ExchangeGuid'],
sortable: true,
exportSelector: 'ExchangeGuid',
minWidth: '350px',
},
{
name: 'Archive Guid',
selector: (row) => row['ArchiveGuid'],
sortable: true,
exportSelector: 'ArchiveGuid',
},
{
name: 'id',
selector: (row) => row['Id'],
omit: true,
exportSelector: 'Id',
},
{
name: 'Actions',
cell: Offcanvas,
},
]

const DeletedMailboxes = () => {
const tenant = useSelector((state) => state.app.currentTenant)
const titleButton = (
<TitleButton href="/email/tools/mailbox-restore-wizard" title="Restore Mailbox" />
)
return (
<CippPageList
title="Soft Deleted Mailboxes"
titleButton={titleButton}
datatable={{
columns,
path: '/api/ListMailboxes',
reportName: `${tenant?.defaultDomainName}-Deleted-Mailboxes`,
params: { TenantFilter: tenant?.defaultDomainName, SoftDeletedMailbox: true },
}}
/>
)
}

export default DeletedMailboxes
12 changes: 8 additions & 4 deletions src/views/identity/administration/Users.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -247,11 +247,13 @@ const Offcanvas = (row, rowIndex, formatExtraData) => {
modal: true,
modalType: 'POST',
modalBody: {
user: row.userPrincipalName,
username: row.userPrincipalName,
userid: row.userPrincipalName,
TenantFilter: tenant.defaultDomainName,
DisableForwarding: true,
message: row.message,
},
modalUrl: `/api/ExecDisableEmailForward`,
modalUrl: `/api/ExecEmailForward`,
modalMessage: 'Are you sure you want to disable forwarding of this users emails?',
},
{
Expand Down Expand Up @@ -688,10 +690,12 @@ const Users = (row) => {
modal: true,
modalType: 'POST',
modalBody: {
user: '!userPrincipalName',
username: '!userPrincipalName',
userid: '!userPrincipalName',
TenantFilter: tenant.defaultDomainName,
DisableForwarding: true,
},
modalUrl: `/api/ExecDisableEmailForward`,
modalUrl: `/api/ExecEmailForward`,
modalMessage: 'Are you sure you want to disable forwarding of these users emails?',
},
{
Expand Down
Loading