mirror of
https://github.com/Portabase/portabase.git
synced 2026-07-14 11:16:13 +02:00
Agent Key Card.
This commit is contained in:
@@ -11,6 +11,7 @@ import {Card, CardContent, CardHeader} from "@/components/ui/card";
|
||||
import {AgentModalKey} from "@/components/wrappers/dashboard/agent/AgentModalKey/AgentModalKey";
|
||||
import {CardsWithPagination} from "@/components/wrappers/common/cards-with-pagination";
|
||||
import {DatabaseCard} from "@/components/wrappers/dashboard/projects/ProjectCard/ProjectDatabaseCard";
|
||||
import {AgentCardKey} from "@/components/wrappers/dashboard/agent/AgentCardKey/AgentCardKey";
|
||||
|
||||
|
||||
export default async function RoutePage(props: PageParams<{ agentId: string }>) {
|
||||
@@ -53,15 +54,13 @@ export default async function RoutePage(props: PageParams<{ agentId: string }>)
|
||||
href={`/dashboard/agents/${agent.id}/edit`}>
|
||||
<GearIcon className="w-7 h-7"/>
|
||||
</Link>
|
||||
<AgentModalKey agent={agent}>
|
||||
<Button variant="outline">
|
||||
<KeyRound/>
|
||||
</Button>
|
||||
</AgentModalKey>
|
||||
{/*<AgentModalKey agent={agent}>*/}
|
||||
{/* <Button variant="outline">*/}
|
||||
{/* <KeyRound/>*/}
|
||||
{/* </Button>*/}
|
||||
{/*</AgentModalKey>*/}
|
||||
</PageTitle>
|
||||
<PageActions className="justify-between">
|
||||
<Button>Restore</Button>
|
||||
</PageActions>
|
||||
|
||||
</div>
|
||||
<PageDescription className="mt-5 sm:mt-0">{agent.description}</PageDescription>
|
||||
<PageContent className="flex flex-col w-full h-full">
|
||||
@@ -88,7 +87,16 @@ export default async function RoutePage(props: PageParams<{ agentId: string }>)
|
||||
{formatDateLastContact(agent.lastContact)}
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
</div>
|
||||
<Card className="w-full sm:w-auto flex-1">
|
||||
<CardHeader className="font-bold text-xl">
|
||||
Edge Key
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<AgentCardKey agent={agent}/>
|
||||
</CardContent>
|
||||
</Card>
|
||||
<CardsWithPagination data={agent.databases} cardItem={DatabaseCard}/>
|
||||
</PageContent>
|
||||
</Page>
|
||||
|
||||
@@ -38,10 +38,6 @@ export const LoginForm = (props: loginFormProps) => {
|
||||
<Card>
|
||||
<CardHeader>
|
||||
<div className="grid gap-2 text-center mb-2">
|
||||
{/*<div className="justify-center text-center flex">*/}
|
||||
{/* <Image src="/logo.png" alt="Logo Portabase" width={100}*/}
|
||||
{/* height={50}/>*/}
|
||||
{/*</div>*/}
|
||||
<h1 className="text-3xl font-bold">Login</h1>
|
||||
<p className="text-balance text-muted-foreground">
|
||||
Enter your informations bellow to login
|
||||
|
||||
+12
-9
@@ -2,21 +2,24 @@
|
||||
import {signInAction} from "@/features/auth/auth.action";
|
||||
import {Button} from "@/components/ui/button";
|
||||
import Image from "next/image";
|
||||
import {env} from "@/env.mjs";
|
||||
|
||||
export type SocialAuthButtonProps = {}
|
||||
|
||||
export const SocialAuthButton = (props: SocialAuthButtonProps) => {
|
||||
return (
|
||||
<div className="flex flex-col gap-4 mt-5">
|
||||
<Button
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
void signInAction("google")
|
||||
}}
|
||||
>
|
||||
<Image src="/google-icon.png" alt="Google OAuth" width={25} height={25}/>
|
||||
Sign in with google
|
||||
</Button>
|
||||
{env.NEXT_PUBLIC_GOOGLE_AUTH === "true" ?
|
||||
<Button
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
void signInAction("google")
|
||||
}}
|
||||
>
|
||||
<Image src="/google-icon.png" alt="Google OAuth" width={25} height={25}/>
|
||||
Sign in with google
|
||||
</Button>
|
||||
:null}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -13,7 +13,8 @@ export async function copyToClipboardWithMeta(value: string) {
|
||||
|
||||
|
||||
export type CopyButtonProps = {
|
||||
value: string
|
||||
value: string,
|
||||
className: string
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
"use client"
|
||||
import {generateEdgeKey} from "@/utils/edge_key";
|
||||
import {getServerUrl} from "@/utils/get-server-url";
|
||||
import {Agent} from "@prisma/client";
|
||||
import {PasswordInput} from "@/components/wrappers/auth/PaswordInput/password-input";
|
||||
import {useState} from "react";
|
||||
import {CopyButton} from "@/components/wrappers/common/button/copy-button";
|
||||
|
||||
export type AgentCardKeyProps = {
|
||||
agent: Agent
|
||||
|
||||
}
|
||||
|
||||
export const AgentCardKey = (props: AgentCardKeyProps) => {
|
||||
const edge_key = generateEdgeKey(getServerUrl(), props.agent.id);
|
||||
const [code, setCode] = useState<string>(`${edge_key}`);
|
||||
|
||||
|
||||
return(
|
||||
<>
|
||||
<PasswordInput value={code} onChange={(value: string) => {setCode(edge_key)} }/>
|
||||
<CopyButton className="mt-5" value={code}/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
@@ -31,6 +31,7 @@ export const env = createEnv({
|
||||
S3_USE_SSL: z.string().optional(),
|
||||
|
||||
STORAGE_TYPE: z.string().optional(),
|
||||
NEXT_PUBLIC_GOOGLE_AUTH: z.string().optional(),
|
||||
|
||||
},
|
||||
/*
|
||||
@@ -40,6 +41,7 @@ export const env = createEnv({
|
||||
*/
|
||||
client: {
|
||||
NEXT_PUBLIC_DOMAIN_NAME: z.string(),
|
||||
NEXT_PUBLIC_GOOGLE_AUTH: z.string().optional(),
|
||||
},
|
||||
/*
|
||||
* Due to how Next.js bundles environment variables on Edge and Client,
|
||||
@@ -62,6 +64,7 @@ export const env = createEnv({
|
||||
|
||||
AUTH_GOOGLE_ID: process.env.AUTH_GOOGLE_ID,
|
||||
AUTH_GOOGLE_SECRET: process.env.AUTH_GOOGLE_SECRET,
|
||||
NEXT_PUBLIC_GOOGLE_AUTH: process.env.NEXT_PUBLIC_GOOGLE_AUTH,
|
||||
|
||||
S3_ENDPOINT: process.env.S3_ENDPOINT,
|
||||
S3_ACCESS_KEY: process.env.S3_ACCESS_KEY,
|
||||
|
||||
@@ -18,8 +18,6 @@ export const signInAction = async (type: string, formData?: any) => {
|
||||
email: formData.email
|
||||
});
|
||||
} catch (error) {
|
||||
// const signInError = error as CredentialsSignin
|
||||
console.error(error);
|
||||
return {error: "Error loging in, please try again or check your credentials !"};
|
||||
}
|
||||
redirect("/")
|
||||
|
||||
Reference in New Issue
Block a user