Skip to content
Closed
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
14 changes: 10 additions & 4 deletions src/management-system-v2/app/(auth)/signin/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getProviders } from '@/app/api/auth/[...nextauth]/auth-options';
import { getProviders } from '@/lib/auth';
import { getCurrentUser } from '@/components/auth';
import { redirect } from 'next/navigation';
import SignIn from './signin';
Expand All @@ -7,12 +7,18 @@ import { generateGuestReferenceToken } from '@/lib/reference-guest-user-token';
const dayInMS = 1000 * 60 * 60 * 24;

// take in search query
const SignInPage = async ({ searchParams }: { searchParams: { callbackUrl: string } }) => {
const { session } = await getCurrentUser();
const SignInPage = async ({ searchParams }: AsyncPageProps) => {
const [{ session }, { callbackUrl }] = await Promise.all([
await getCurrentUser(),
await searchParams,
]);

const isGuest = session?.user.isGuest;

const paramsCallbackUrl = typeof callbackUrl === 'string' ? callbackUrl : callbackUrl?.[0];

if (session?.user && !isGuest) {
const callbackUrl = searchParams.callbackUrl ?? `/${session.user.id}/processes`;
const callbackUrl = paramsCallbackUrl ?? `/${session.user.id}/processes`;
redirect(callbackUrl);
}

Expand Down
2 changes: 1 addition & 1 deletion src/management-system-v2/app/(auth)/signin/signin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { useSearchParams } from 'next/navigation';
import Link from 'next/link';
import Image from 'next/image';
import { signIn } from 'next-auth/react';
import { type ExtractedProvider } from '@/app/api/auth/[...nextauth]/auth-options';
import { type ExtractedProvider } from '@/lib/auth';

const verticalGap = '1rem';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@ const SavedEngines = async ({ spaceId, ability }: { spaceId: string; ability: Ab
return <SavedEnginesList savedEngines={engines} />;
};

const EnginesPage = async ({ params }: { params: { environmentId: string } }) => {
const EnginesPage = async ({ params }: AsyncPageProps) => {
if (!env.PROCEED_PUBLIC_ENABLE_EXECUTION || !enableUseDB) {
return notFound();
}

const { activeEnvironment, ability } = await getCurrentEnvironment(params.environmentId);
const { environmentId } = await params;
const { activeEnvironment, ability } = await getCurrentEnvironment(environmentId);

return (
<Content title="Engines">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,11 @@ async function Deployment({ processId, spaceId }: { processId: string; spaceId:
return <ProcessDeploymentView selectedProcess={selectedProcess} />;
}

export default async function Page({
params,
}: {
params: { processId: string; environmentId: string };
}) {
export default async function Page({ params }: AsyncPageProps) {
const { environmentId, processId } = await params;

//TODO: authentication + authorization
const { activeEnvironment, ability } = await getCurrentEnvironment(params.environmentId);
const { activeEnvironment, ability } = await getCurrentEnvironment(environmentId);

return (
<Suspense
Expand All @@ -50,10 +48,7 @@ export default async function Page({
</Content>
}
>
<Deployment
processId={decodeURIComponent(params.processId)}
spaceId={activeEnvironment.spaceId}
/>
<Deployment processId={decodeURIComponent(processId)} spaceId={activeEnvironment.spaceId} />
</Suspense>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,13 @@ function getDeploymentNames(deployments: DeployedProcessInfo[]) {
return deployments as (DeployedProcessInfo & { name: string })[];
}

export default async function ExecutionsPage({ params }: { params: { environmentId: string } }) {
export default async function ExecutionsPage({ params }: AsyncPageProps) {
if (!env.PROCEED_PUBLIC_ENABLE_EXECUTION) {
return notFound();
}

const { ability, activeEnvironment } = await getCurrentEnvironment(params.environmentId);
const { environmentId } = await params;
const { ability, activeEnvironment } = await getCurrentEnvironment(environmentId);

// TODO: check ability

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ import SettingsForm from './settings-form';
import Title from 'antd/es/typography/Title';
import { redirect } from 'next/navigation';

const GeneralSettingsPage = async ({ params }: { params: { environmentId: string } }) => {
const { ability } = await getCurrentEnvironment(params.environmentId);
const GeneralSettingsPage = async ({ params }: AsyncPageProps) => {
const { environmentId } = await params;
const { ability } = await getCurrentEnvironment(environmentId);
if (!ability.can('view', 'Setting')) return redirect('/');

const updateSettings = async (newSettings: Object) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,9 @@ import { AuthenticatedUser } from '@/lib/data/user-schema';
import SpaceLink from '@/components/space-link';
import { getFolderById } from '@/lib/data/legacy/folders';

const Page = async ({
params: { roleId, environmentId },
}: {
params: { roleId: string; environmentId: string };
}) => {
const Page = async ({ params }: AsyncPageProps) => {
const { environmentId, roleId } = await params;

const { ability, activeEnvironment } = await getCurrentEnvironment(environmentId);
const role = await getRoleById(roleId, ability);
if (role && !ability.can('manage', toCaslResource('Role', role))) return <UnauthorizedFallback />;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ import UnauthorizedFallback from '@/components/unauthorized-fallback';
import { ComponentProps } from 'react';
import { getUserById } from '@/lib/data/DTOs';

const Page = async ({ params }: { params: { environmentId: string } }) => {
const { ability, activeEnvironment } = await getCurrentEnvironment(params.environmentId);
const Page = async ({ params }: AsyncPageProps) => {
const { environmentId } = await params;
const { ability, activeEnvironment } = await getCurrentEnvironment(environmentId);

if (!ability.can('manage', 'Role')) return <UnauthorizedFallback />;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ import { getUserById } from '@/lib/data/DTOs';
import { AuthenticatedUser, User } from '@/lib/data/user-schema';
import { asyncMap } from '@/lib/helpers/javascriptHelpers';

const Page = async ({ params }: { params: { environmentId: string } }) => {
const { ability, activeEnvironment } = await getCurrentEnvironment(params.environmentId);
const Page = async ({ params }: AsyncPageProps) => {
const { environmentId } = await params;
const { ability, activeEnvironment } = await getCurrentEnvironment(environmentId);
if (!ability.can('manage', 'User')) return <UnauthorizedFallback />;

const memberships = await getMembers(activeEnvironment.spaceId, ability);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,20 +28,20 @@ import Link from 'next/link';
import { getEnvironmentById, organizationHasLogo } from '@/lib/data/DTOs';
import { getSpaceFolderTree, getUserRules } from '@/lib/authorization/authorization';
import { Environment } from '@/lib/data/environment-schema';
import { LuTable2 } from 'react-icons/lu';
import { spaceURL } from '@/lib/utils';
import { RemoveReadOnly } from '@/lib/typescript-utils';
import { env } from '@/lib/env-vars';
import { asyncMap } from '@/lib/helpers/javascriptHelpers';
import { adminRules } from '@/lib/authorization/globalRules';

const DashboardLayout = async ({
export default async function DashboardLayout({
children,
params,
}: PropsWithChildren<{ params: { environmentId: string } }>) => {
}: PropsWithChildren<{ params: Promise<{ [slug: string]: string }> }>) {
const { environmentId } = await params;
const { userId, systemAdmin } = await getCurrentUser();

const { activeEnvironment, ability } = await getCurrentEnvironment(params.environmentId);
const { activeEnvironment, ability } = await getCurrentEnvironment(environmentId);
const can = ability.can.bind(ability);
const userEnvironments: Environment[] = [await getEnvironmentById(userId)];
const userOrgEnvs = await getUserOrganizationEnvironments(userId);
Expand Down Expand Up @@ -205,6 +205,4 @@ const DashboardLayout = async ({
</Layout>
</>
);
};

export default DashboardLayout;
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,9 @@ import Content from '@/components/content';
import { getDeepParentConfigurationById } from '@/lib/data/legacy/machine-config';
import ConfigPage from './config-page-content';

type MachineConfigProps = {
params: { configId: string };
searchParams: { version?: string };
};
const MachineConfigView: React.FC<AsyncPageProps> = async ({ params }) => {
const { configId } = await params;

const MachineConfigView: React.FC<MachineConfigProps> = async ({ params: { configId } }) => {
let machineConfig = await getDeepParentConfigurationById(configId);

//replace ConfigContent <-> MachineConfigEditor as needed
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import Content from '@/components/content';
import EllipsisBreadcrumb from '@/components/ellipsis-breadcrumb';
import { ComponentProps } from 'react';
import { Space } from 'antd';
import { getCurrentEnvironment } from '@/components/auth';
import { notFound } from 'next/navigation';
Expand All @@ -11,24 +9,20 @@ import { env } from '@/lib/env-vars';
import UnauthorizedFallback from '@/components/unauthorized-fallback';
export type ListItem = ParentConfig;

const MachineConfigPage = async ({
params,
}: {
params: { environmentId: string; folderId?: string };
}) => {
const MachineConfigPage = async ({ params }: AsyncPageProps) => {
if (!env.ENABLE_MACHINE_CONFIG) {
return notFound();
}

const { ability, activeEnvironment } = await getCurrentEnvironment(params.environmentId);
const { environmentId } = await params;
const { ability, activeEnvironment } = await getCurrentEnvironment(environmentId);

if (!ability.can('view', 'MachineConfig')) return <UnauthorizedFallback />;

const folderContents = (await getParentConfigurations(
activeEnvironment.spaceId,
ability,
)) satisfies ListItem[];
const pathToFolder: ComponentProps<typeof EllipsisBreadcrumb>['items'] = [];

return (
<>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ import { OrganizationEnvironment } from '@/lib/data/environment-schema';
import DeleteOrganizationButton from './delete-organization-button';
import { AuthCan } from '@/components/auth-can';

const GeneralSettingsPage = async ({ params }: { params: { environmentId: string } }) => {
const { ability, activeEnvironment } = await getCurrentEnvironment(params.environmentId);
const GeneralSettingsPage = async ({ params }: AsyncPageProps) => {
const { environmentId } = await params;
const { ability, activeEnvironment } = await getCurrentEnvironment(environmentId);
if (!activeEnvironment.isOrganization || !ability.can('manage', 'Environment'))
return redirect('/');

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ const ModelerShareModalOptionEmdedInWeb = ({
allowIframeTimestamp,
refresh,
}: ModelerShareModalOptionEmdedInWebProps) => {
const { processId } = useParams();
let { processId } = useParams();
processId = typeof processId === 'string' ? processId : processId?.[0] ?? '';
const environment = useEnvironment();
const [embeddingUrl, setEmbeddingUrl] = useState('');
const { message } = App.useApp();
Expand Down Expand Up @@ -79,7 +80,7 @@ const ModelerShareModalOptionEmdedInWeb = ({
environment.spaceId,
);
} catch (err) {
message.error('An error occured while enabling embedding.');
message.error('An error occurred while enabling embedding.');
}
} else {
// deactivate embedding
Expand All @@ -91,7 +92,7 @@ const ModelerShareModalOptionEmdedInWeb = ({
);
setEmbeddingUrl('');
} catch (err) {
message.error('An error occured while disabling embedding.');
message.error('An error occurred while disabling embedding.');
}
}
refresh();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ const ModelerShareModalOptionPublicLink = ({
refresh,
processVersions,
}: ModelerShareModalOptionPublicLinkProps) => {
const { processId } = useParams();
let { processId } = useParams();
processId = typeof processId === 'string' ? processId : processId?.[0] ?? '';
const query = useSearchParams();
const [selectedVersionId, setSelectedVersionId] = useState<string | null>(query.get('version'));
const environment = useEnvironment();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ const ModelerShareModalButton: FC<ShareModalProps> = ({
onExportMobile,
versions: processVersions,
}) => {
const { processId } = useParams();
let { processId } = useParams();
processId = typeof processId === 'string' ? processId : processId?.[0] ?? '';
const environment = useEnvironment();
const [isOpen, setIsOpen] = useState(false);
const [activeIndex, setActiveIndex] = useState<number | null>(0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@ import { getProcess, getProcesses } from '@/lib/data/DTOs';
import { getProcessBPMN } from '@/lib/data/processes';
import { UnauthorizedError } from '@/lib/ability/abilityHelper';

type ProcessProps = {
params: { processId: string; environmentId: string };
searchParams: { version?: string };
};

const Process = async ({ params: { processId, environmentId }, searchParams }: ProcessProps) => {
const Process = async ({ params, searchParams }: AsyncPageProps) => {
// TODO: check if params is correct after fix release. And maybe don't need
// refresh in processes.tsx anymore?
//console.log('processId', processId);
//console.log('query', searchParams);
const selectedVersionId = searchParams.version ? searchParams.version : undefined;
let { version: selectedVersionId } = await searchParams;
selectedVersionId =
typeof selectedVersionId === 'string' ? selectedVersionId : selectedVersionId?.[0];

const { environmentId, processId } = await params;

const { ability, activeEnvironment } = await getCurrentEnvironment(environmentId);
// Only load bpmn if no version selected.
const process = await getProcess(processId, !selectedVersionId);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Processes from '@/components/processes';
import Content from '@/components/content';
import { Button, Space } from 'antd';
import { getCurrentEnvironment } from '@/components/auth';
import { getCurrentEnvironment, getCurrentUser } from '@/components/auth';
// This is a workaround to enable the Server Actions in that file to return any
// client components. This is not possible with the current nextjs compiler
// otherwise. It might be possible in the future with turbopack without this
Expand All @@ -18,20 +18,16 @@ import { spaceURL } from '@/lib/utils';
import { getFolderById, getRootFolder, getFolderContents } from '@/lib/data/DTOs';
export type ListItem = ProcessMetadata | (Folder & { type: 'folder' });

const ProcessesPage = async ({
params,
}: {
params: { environmentId: string; folderId?: string };
}) => {
const { ability, activeEnvironment } = await getCurrentEnvironment(params.environmentId);
const ProcessesPage = async ({ params }: AsyncPageProps) => {
const { environmentId, folderId } = await params;

const { ability, activeEnvironment } = await getCurrentEnvironment(environmentId);

const favs = await getUsersFavourites();

const rootFolder = await getRootFolder(activeEnvironment.spaceId, ability);

const folder = await getFolderById(
params.folderId ? decodeURIComponent(params.folderId) : rootFolder.id,
);
const folder = await getFolderById(folderId ? decodeURIComponent(folderId) : rootFolder.id);

const folderContents = await getFolderContents(folder.id, ability);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ import { Space } from 'antd';
import { getCurrentEnvironment } from '@/components/auth';
import { redirect } from 'next/navigation';

const Projects = async ({ params }: { params: { environmentId: string } }) => {
const { ability } = await getCurrentEnvironment(params.environmentId);
const Projects = async ({ params }: AsyncPageProps) => {
const { environmentId } = await params;
const { ability } = await getCurrentEnvironment(environmentId);
if (!ability.can('view', 'Setting')) return redirect('/');

return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ import { notFound } from 'next/navigation';
import Tasklist from './tasklist';
import { env } from '@/lib/env-vars';

const TasklistPage = async ({ params }: { params: { environmentId: string } }) => {
const TasklistPage = async ({ params }: AsyncPageProps) => {
if (!env.PROCEED_PUBLIC_ENABLE_EXECUTION) {
return notFound();
}

const { ability } = await getCurrentEnvironment(params.environmentId);
const { environmentId } = await params;
const { ability } = await getCurrentEnvironment(environmentId);

const generateMockDataUserTasks = () => {
const availableStatus = ['READY', 'ACTIVE', 'COMPLETED', 'PAUSED'];
Expand Down
Loading
Loading