diff --git a/components/dashboard/settings/profile/generate-token.tsx b/components/dashboard/settings/profile/generate-token.tsx
index 8fef246e..8ad0cfa9 100644
--- a/components/dashboard/settings/profile/generate-token.tsx
+++ b/components/dashboard/settings/profile/generate-token.tsx
@@ -10,6 +10,8 @@ import { api } from "@/utils/api";
import { toast } from "sonner";
import { ToggleVisibilityInput } from "@/components/shared/toggle-visibility-input";
import { Label } from "@/components/ui/label";
+import Link from "next/link";
+import { ExternalLinkIcon } from "lucide-react";
export const GenerateToken = () => {
const { data, refetch } = api.auth.get.useQuery();
@@ -26,6 +28,19 @@ export const GenerateToken = () => {
Generate a token to access the API/CLI
+
+
+ Swagger API:
+
+
+ View
+
+
+
diff --git a/pages/swagger.tsx b/pages/swagger.tsx
index 35116b2f..db948e66 100644
--- a/pages/swagger.tsx
+++ b/pages/swagger.tsx
@@ -1,8 +1,11 @@
+import { appRouter } from "@/server/api/root";
import { validateRequest } from "@/server/auth/auth";
import { api } from "@/utils/api";
+import { createServerSideHelpers } from "@trpc/react-query/server";
import type { GetServerSidePropsContext, NextPage } from "next";
import dynamic from "next/dynamic";
import "swagger-ui-react/swagger-ui.css";
+import superjson from "superjson";
const SwaggerUI = dynamic(() => import("swagger-ui-react"), { ssr: false });
@@ -18,8 +21,8 @@ const Home: NextPage = () => {
export default Home;
export async function getServerSideProps(context: GetServerSidePropsContext) {
- const { user } = await validateRequest(context.req, context.res);
-
+ const { req, res } = context;
+ const { user, session } = await validateRequest(context.req, context.res);
if (!user) {
return {
redirect: {
@@ -28,6 +31,33 @@ export async function getServerSideProps(context: GetServerSidePropsContext) {
},
};
}
+ // Fetch data from external API
+ const helpers = createServerSideHelpers({
+ router: appRouter,
+ ctx: {
+ req: req as any,
+ res: res as any,
+ db: null as any,
+ session: session,
+ user: user,
+ },
+ transformer: superjson,
+ });
+ if (user.rol === "user") {
+ const result = await helpers.user.byAuthId.fetch({
+ authId: user.id,
+ });
+
+ if (!result.canAccessToAPI) {
+ return {
+ redirect: {
+ permanent: true,
+ destination: "/",
+ },
+ };
+ }
+ }
+
return {
props: {},
};