@schemavaults/auth-ui 0.8.3 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/DisconnectAppToApiDialog/DisconnectAppToApiDialog.d.ts +19 -0
- package/dist/components/DisconnectAppToApiDialog/DisconnectAppToApiDialog.js +57 -0
- package/dist/components/DisconnectAppToApiDialog/DisconnectAppToApiDialog.js.map +1 -0
- package/dist/components/DisconnectAppToApiDialog/index.d.ts +2 -0
- package/dist/components/DisconnectAppToApiDialog/index.js +2 -0
- package/dist/components/DisconnectAppToApiDialog/index.js.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ReactElement } from "react";
|
|
2
|
+
export type DisconnectAppToApiConfirmationTarget = "app" | "api_server";
|
|
3
|
+
export interface DisconnectAppToApiDialogProps {
|
|
4
|
+
api_server_id: string;
|
|
5
|
+
api_server_name: string;
|
|
6
|
+
client_app_id: string;
|
|
7
|
+
client_app_name: string;
|
|
8
|
+
/**
|
|
9
|
+
* Which name the user must type to confirm. Use "app" on the API server
|
|
10
|
+
* detail page (where each row represents the app being revoked) and
|
|
11
|
+
* "api_server" on the app detail page.
|
|
12
|
+
*/
|
|
13
|
+
confirmation_target: DisconnectAppToApiConfirmationTarget;
|
|
14
|
+
open: boolean;
|
|
15
|
+
onOpenChange: (open: boolean) => void;
|
|
16
|
+
onDisconnected?: () => void;
|
|
17
|
+
}
|
|
18
|
+
export declare function DisconnectAppToApiDialog({ api_server_id, api_server_name, client_app_id, client_app_name, confirmation_target, open, onOpenChange, onDisconnected, }: DisconnectAppToApiDialogProps): ReactElement;
|
|
19
|
+
export default DisconnectAppToApiDialog;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Input, Label, useToast, } from "@schemavaults/ui";
|
|
4
|
+
import { useState, useTransition } from "react";
|
|
5
|
+
import { Unplug } from "lucide-react";
|
|
6
|
+
import { useAuth } from "@schemavaults/auth-react-provider";
|
|
7
|
+
export function DisconnectAppToApiDialog({ api_server_id, api_server_name, client_app_id, client_app_name, confirmation_target, open, onOpenChange, onDisconnected, }) {
|
|
8
|
+
const [confirmationInput, setConfirmationInput] = useState("");
|
|
9
|
+
const [disconnecting, startDisconnecting] = useTransition();
|
|
10
|
+
const { toast } = useToast();
|
|
11
|
+
const auth = useAuth();
|
|
12
|
+
const expectedName = confirmation_target === "app" ? client_app_name : api_server_name;
|
|
13
|
+
const targetLabel = confirmation_target === "app" ? "app" : "API server";
|
|
14
|
+
const isConfirmed = confirmationInput === expectedName;
|
|
15
|
+
function handleCancel() {
|
|
16
|
+
setConfirmationInput("");
|
|
17
|
+
onOpenChange(false);
|
|
18
|
+
}
|
|
19
|
+
function handleOpenChange(nextOpen) {
|
|
20
|
+
if (!nextOpen) {
|
|
21
|
+
setConfirmationInput("");
|
|
22
|
+
}
|
|
23
|
+
onOpenChange(nextOpen);
|
|
24
|
+
}
|
|
25
|
+
async function handleDisconnect() {
|
|
26
|
+
if (!isConfirmed)
|
|
27
|
+
return;
|
|
28
|
+
startDisconnecting(async () => {
|
|
29
|
+
try {
|
|
30
|
+
const authClient = auth.ready ? auth.client.current : undefined;
|
|
31
|
+
if (!authClient) {
|
|
32
|
+
throw new Error("Auth client is not available");
|
|
33
|
+
}
|
|
34
|
+
await authClient.disconnectAppFromApiServer(api_server_id, client_app_id);
|
|
35
|
+
toast({
|
|
36
|
+
title: "Connection revoked",
|
|
37
|
+
description: `"${client_app_name}" can no longer request tokens for "${api_server_name}".`,
|
|
38
|
+
});
|
|
39
|
+
setConfirmationInput("");
|
|
40
|
+
onOpenChange(false);
|
|
41
|
+
onDisconnected?.();
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
toast({
|
|
45
|
+
variant: "destructive",
|
|
46
|
+
title: "Failed to disconnect",
|
|
47
|
+
description: error instanceof Error
|
|
48
|
+
? error.message
|
|
49
|
+
: "An unknown error occurred",
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return (_jsx(Dialog, { open: open, onOpenChange: handleOpenChange, children: _jsxs(DialogContent, { className: "sm:max-w-[425px]", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Disconnect app from API server" }), _jsxs(DialogDescription, { children: ["This will revoke", " ", _jsx("span", { className: "font-medium", children: client_app_name }), "'s access to ", _jsx("span", { className: "font-medium", children: api_server_name }), ". The connection can be re-established later."] })] }), _jsx("div", { className: "flex flex-col gap-4 py-4", children: _jsxs("div", { className: "flex flex-col gap-2", children: [_jsxs(Label, { htmlFor: "confirm-disconnect-name", children: ["Type the ", targetLabel, " name", " ", _jsx("span", { className: "font-bold", children: expectedName }), " to confirm"] }), _jsx(Input, { id: "confirm-disconnect-name", "data-testid": "confirm-disconnect-name-input", placeholder: expectedName, value: confirmationInput, onChange: (e) => setConfirmationInput(e.target.value), disabled: disconnecting })] }) }), _jsxs(DialogFooter, { className: "gap-2 sm:gap-0", children: [_jsx(Button, { type: "button", variant: "outline", onClick: handleCancel, disabled: disconnecting, children: "Cancel" }), _jsxs(Button, { type: "button", variant: "destructive", onClick: handleDisconnect, disabled: !isConfirmed || disconnecting, "data-testid": "confirm-disconnect-button", children: [_jsx(Unplug, { className: "h-4 w-4 mr-2" }), "Disconnect"] })] })] }) }));
|
|
55
|
+
}
|
|
56
|
+
export default DisconnectAppToApiDialog;
|
|
57
|
+
//# sourceMappingURL=DisconnectAppToApiDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisconnectAppToApiDialog.js","sourceRoot":"","sources":["../../../src/components/DisconnectAppToApiDialog/DisconnectAppToApiDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/DisconnectAppToApiDialog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -52,6 +52,8 @@ export { DeleteAppDialog } from "./DeleteAppDialog";
|
|
|
52
52
|
export type { DeleteAppDialogProps } from "./DeleteAppDialog";
|
|
53
53
|
export { DeleteApiServerDialog } from "./DeleteApiServerDialog";
|
|
54
54
|
export type { DeleteApiServerDialogProps } from "./DeleteApiServerDialog";
|
|
55
|
+
export { DisconnectAppToApiDialog } from "./DisconnectAppToApiDialog";
|
|
56
|
+
export type { DisconnectAppToApiDialogProps, DisconnectAppToApiConfirmationTarget, } from "./DisconnectAppToApiDialog";
|
|
55
57
|
export { MfaSettingsCard } from "./MfaSettingsCard";
|
|
56
58
|
export type { MfaSettingsCardProps } from "./MfaSettingsCard";
|
|
57
59
|
export { TotpEnrollmentDialog } from "./TotpEnrollmentDialog";
|
package/dist/components/index.js
CHANGED
|
@@ -24,6 +24,7 @@ export { SentInvitationsCard } from "./SentInvitationsCard";
|
|
|
24
24
|
export { OrganizationSettingsCard } from "./OrganizationSettingsCard";
|
|
25
25
|
export { DeleteAppDialog } from "./DeleteAppDialog";
|
|
26
26
|
export { DeleteApiServerDialog } from "./DeleteApiServerDialog";
|
|
27
|
+
export { DisconnectAppToApiDialog } from "./DisconnectAppToApiDialog";
|
|
27
28
|
export { MfaSettingsCard } from "./MfaSettingsCard";
|
|
28
29
|
export { TotpEnrollmentDialog } from "./TotpEnrollmentDialog";
|
|
29
30
|
export { RecoveryCodesPanel } from "./RecoveryCodesPanel";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAG9B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,YAAY,CAAC;AAK3B,cAAc,kBAAkB,CAAC;AAKjC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,iCAAiC,GAClC,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAMtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAG9B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,YAAY,CAAC;AAK3B,cAAc,kBAAkB,CAAC;AAKjC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,iCAAiC,GAClC,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAMtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAMtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schemavaults/auth-ui",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"description": "React.js UI components for authentication/authorization shared between different SchemaVaults apps",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"react-dom": "^19.2.5",
|
|
18
18
|
"next": "^16.2.4",
|
|
19
19
|
"@schemavaults/ui": "^0.37.1",
|
|
20
|
-
"@schemavaults/auth-react-provider": "0.11.
|
|
20
|
+
"@schemavaults/auth-react-provider": "0.11.5",
|
|
21
21
|
"@schemavaults/app-definitions": "0.6.23",
|
|
22
22
|
"@schemavaults/auth-common": "0.12.0",
|
|
23
23
|
"lucide-react": "0.575.0",
|