mirror of
https://github.com/Dokploy/dokploy.git
synced 2026-06-15 20:25:23 +02:00
* fix: scope dokploy-server schedules to organization instead of user Replaces userId with organizationId on the schedule table so that global (dokploy-server) schedules are shared across all owners and admins of the same organization, while remaining isolated between different organizations. Includes a data migration that backfills organizationId from the owner membership record for any existing dokploy-server schedules. Closes #4300 * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
51 lines
1.3 KiB
TypeScript
51 lines
1.3 KiB
TypeScript
import { IS_CLOUD } from "@dokploy/server/constants";
|
|
import { validateRequest } from "@dokploy/server/lib/auth";
|
|
import type { GetServerSidePropsContext } from "next";
|
|
import type { ReactElement } from "react";
|
|
import { ShowSchedules } from "@/components/dashboard/application/schedules/show-schedules";
|
|
import { DashboardLayout } from "@/components/layouts/dashboard-layout";
|
|
import { Card } from "@/components/ui/card";
|
|
|
|
function SchedulesPage() {
|
|
return (
|
|
<div className="w-full">
|
|
<Card className="h-full bg-sidebar p-2.5 rounded-xl max-w-8xl mx-auto min-h-[45vh]">
|
|
<div className="rounded-xl bg-background shadow-md h-full">
|
|
<ShowSchedules scheduleType="dokploy-server" id="dokploy-server" />
|
|
</div>
|
|
</Card>
|
|
</div>
|
|
);
|
|
}
|
|
export default SchedulesPage;
|
|
|
|
SchedulesPage.getLayout = (page: ReactElement) => {
|
|
return <DashboardLayout>{page}</DashboardLayout>;
|
|
};
|
|
|
|
export async function getServerSideProps(
|
|
ctx: GetServerSidePropsContext<{ serviceId: string }>,
|
|
) {
|
|
if (IS_CLOUD) {
|
|
return {
|
|
redirect: {
|
|
permanent: false,
|
|
destination: "/dashboard/home",
|
|
},
|
|
};
|
|
}
|
|
const { user } = await validateRequest(ctx.req);
|
|
if (!user || (user.role !== "owner" && user.role !== "admin")) {
|
|
return {
|
|
redirect: {
|
|
permanent: false,
|
|
destination: "/",
|
|
},
|
|
};
|
|
}
|
|
|
|
return {
|
|
props: {},
|
|
};
|
|
}
|