@schemavaults/auth-ui 0.13.9 → 0.14.1

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.
Files changed (60) hide show
  1. package/dist/components/ApiServersCard/api_servers_card.d.ts +15 -0
  2. package/dist/components/ApiServersCard/api_servers_card.js +33 -3
  3. package/dist/components/ApiServersCard/api_servers_card.js.map +1 -1
  4. package/dist/components/ApiServersTable/ApiServerRowActions.js +20 -6
  5. package/dist/components/ApiServersTable/ApiServerRowActions.js.map +1 -1
  6. package/dist/components/ApiServersTable/ApiServersTable.d.ts +12 -1
  7. package/dist/components/ApiServersTable/ApiServersTable.js +14 -15
  8. package/dist/components/ApiServersTable/ApiServersTable.js.map +1 -1
  9. package/dist/components/ApiServersTable/ApiServersTableConfigContext.d.ts +6 -0
  10. package/dist/components/ApiServersTable/ApiServersTableConfigContext.js +1 -0
  11. package/dist/components/ApiServersTable/ApiServersTableConfigContext.js.map +1 -1
  12. package/dist/components/ApiServersTable/columns.js +3 -1
  13. package/dist/components/ApiServersTable/columns.js.map +1 -1
  14. package/dist/components/ApiServersTable/useApiServersList.d.ts +6 -0
  15. package/dist/components/AppsCard/apps_card.d.ts +15 -0
  16. package/dist/components/AppsCard/apps_card.js +36 -5
  17. package/dist/components/AppsCard/apps_card.js.map +1 -1
  18. package/dist/components/AppsTable/AppsTable.d.ts +12 -1
  19. package/dist/components/AppsTable/AppsTable.js +14 -8
  20. package/dist/components/AppsTable/AppsTable.js.map +1 -1
  21. package/dist/components/AppsTable/columns.d.ts +1 -1
  22. package/dist/components/AppsTable/columns.js +5 -3
  23. package/dist/components/AppsTable/columns.js.map +1 -1
  24. package/dist/components/AppsTable/frontend_app_actions.d.ts +2 -1
  25. package/dist/components/AppsTable/frontend_app_actions.js +19 -3
  26. package/dist/components/AppsTable/frontend_app_actions.js.map +1 -1
  27. package/dist/components/CreateApiServerDialog/CreateApiServerDialog.d.ts +7 -2
  28. package/dist/components/CreateApiServerDialog/CreateApiServerDialog.js +2 -4
  29. package/dist/components/CreateApiServerDialog/CreateApiServerDialog.js.map +1 -1
  30. package/dist/components/CreateApiServerDialog/CreateApiServerForm.d.ts +7 -3
  31. package/dist/components/CreateApiServerDialog/CreateApiServerForm.js +8 -4
  32. package/dist/components/CreateApiServerDialog/CreateApiServerForm.js.map +1 -1
  33. package/dist/components/CreateAppDialog/CreateAppDialog.d.ts +7 -2
  34. package/dist/components/CreateAppDialog/CreateAppDialog.js +2 -4
  35. package/dist/components/CreateAppDialog/CreateAppDialog.js.map +1 -1
  36. package/dist/components/CreateAppDialog/CreateAppForm.d.ts +7 -3
  37. package/dist/components/CreateAppDialog/CreateAppForm.js +8 -11
  38. package/dist/components/CreateAppDialog/CreateAppForm.js.map +1 -1
  39. package/dist/components/CreateAppDialog/requested-ownership-fields.d.ts +9 -0
  40. package/dist/components/CreateAppDialog/requested-ownership-fields.js +26 -0
  41. package/dist/components/CreateAppDialog/requested-ownership-fields.js.map +1 -0
  42. package/dist/components/OwnerTypeFilter/OwnerTypeFilter.d.ts +39 -0
  43. package/dist/components/OwnerTypeFilter/OwnerTypeFilter.js +65 -0
  44. package/dist/components/OwnerTypeFilter/OwnerTypeFilter.js.map +1 -0
  45. package/dist/components/OwnerTypeFilter/index.d.ts +2 -0
  46. package/dist/components/OwnerTypeFilter/index.js +2 -0
  47. package/dist/components/OwnerTypeFilter/index.js.map +1 -0
  48. package/dist/components/ResourceOwnerLabel/ResourceOwnerLabel.d.ts +20 -0
  49. package/dist/components/ResourceOwnerLabel/ResourceOwnerLabel.js +52 -0
  50. package/dist/components/ResourceOwnerLabel/ResourceOwnerLabel.js.map +1 -0
  51. package/dist/components/ResourceOwnerLabel/index.d.ts +4 -0
  52. package/dist/components/ResourceOwnerLabel/index.js +3 -0
  53. package/dist/components/ResourceOwnerLabel/index.js.map +1 -0
  54. package/dist/components/ResourceOwnerLabel/useCanManageListedResource.d.ts +32 -0
  55. package/dist/components/ResourceOwnerLabel/useCanManageListedResource.js +44 -0
  56. package/dist/components/ResourceOwnerLabel/useCanManageListedResource.js.map +1 -0
  57. package/dist/components/index.d.ts +4 -0
  58. package/dist/components/index.js +2 -0
  59. package/dist/components/index.js.map +1 -1
  60. package/package.json +4 -4
@@ -1,5 +1,6 @@
1
1
  import { type ReactElement } from "react";
2
2
  import type { ListApiServersQueryType } from "@schemavaults/app-definitions";
3
+ import type { OwnerTypeFilterValue } from "../OwnerTypeFilter";
3
4
  import { type PreloadedApiServersTableDataWithDomainRefs } from "../ApiServersTable";
4
5
  export interface ApiServersCardProps {
5
6
  cardTitle?: string;
@@ -11,6 +12,20 @@ export interface ApiServersCardProps {
11
12
  uuid: () => string;
12
13
  showConnectAppToApi?: boolean;
13
14
  isOrgOwner?: boolean;
15
+ /**
16
+ * For the "accessible" query: ids of the organizations in which the
17
+ * viewer is an owner/admin (decides which rows expose management
18
+ * actions).
19
+ */
20
+ managedOrganizationIds?: readonly string[];
21
+ /** Client-side filter on each row's resolved owner type. */
22
+ ownerTypeFilter?: OwnerTypeFilterValue;
23
+ /**
24
+ * Whether the card offers API server creation at all (default true).
25
+ * Pages set this to false when the `allow_user_owned_resource_creation`
26
+ * server setting is disabled for a non-admin viewer.
27
+ */
28
+ canCreate?: boolean;
14
29
  }
15
30
  export declare function ApiServersCard(props: ApiServersCardProps): ReactElement;
16
31
  export default ApiServersCard;
@@ -2,13 +2,43 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState } from "react";
4
4
  import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, cn, } from "@schemavaults/ui";
5
+ import { useCurrentUser } from "@schemavaults/auth-react-provider";
5
6
  import { ApiServersTable, clearUseApiServersCache, } from "../ApiServersTable";
6
7
  import CreateApiServerDialog, { CreateApiServerDialogOpenDispatchContext, } from "../CreateApiServerDialog";
7
8
  import CreateApiServerDomainDialog, { CreateApiServerDomainDialogOpenContext, CreateApiServerDomainDialogOpenDispatchContext, } from "../CreateApiServerDomainDialog";
8
9
  import { useAuthUiOwnerOrganizationId } from "../OwnerOrganizationProvider";
9
10
  import ConnectAppToApiDialog, { ConnectAppToApiDialogOpenDispatchContext, } from "../ConnectAppToApiDialog";
11
+ /**
12
+ * @description Who an API server created from a card of the given query
13
+ * type belongs to: platform-owned from the admin "all" list,
14
+ * organization-owned from an organization page, user-owned from the
15
+ * "owned" (your API servers) card. Returns null when the card cannot
16
+ * create API servers.
17
+ */
18
+ function resolveCreateOwnershipForCard(queryType, organization_id, platformOrganizationId, currentUserUid) {
19
+ switch (queryType) {
20
+ case "all":
21
+ return { owner_type: "platform" };
22
+ case "org":
23
+ return organization_id && organization_id !== platformOrganizationId
24
+ ? { owner_type: "organization", owner_organization_id: organization_id }
25
+ : { owner_type: "platform" };
26
+ case "owned":
27
+ case "accessible":
28
+ // The "accessible" page creates personal API servers;
29
+ // organization-owned ones are created from the organization's page
30
+ // and platform-owned ones from the admin console.
31
+ return currentUserUid
32
+ ? { owner_type: "user", owner_uid: currentUserUid }
33
+ : null;
34
+ default:
35
+ return null;
36
+ }
37
+ }
10
38
  export function ApiServersCard(props) {
11
39
  const ownerOrganizationId = useAuthUiOwnerOrganizationId();
40
+ const currentUser = useCurrentUser();
41
+ const createOwnership = resolveCreateOwnershipForCard(props.queryType, props.organization_id, ownerOrganizationId, currentUser?.uid);
12
42
  const cardTitle = props.cardTitle ?? "API Servers";
13
43
  const cardDescription = props.cardDescription ??
14
44
  "View and manage backend API servers accessible from client applications.";
@@ -16,9 +46,9 @@ export function ApiServersCard(props) {
16
46
  const [createApiServerDialogOpen, setCreateApiServerDialogOpen] = useState(false);
17
47
  const [connectAppToApiDialogOpen, setConnectAppToApiDialogOpen] = useState(false);
18
48
  const [isAddApiServerDomainDialogOpen, setAddApiServerDomainDialogOpen] = useState(false);
19
- return (_jsx(CreateApiServerDialogOpenDispatchContext.Provider, { value: setCreateApiServerDialogOpen, children: _jsx(ConnectAppToApiDialogOpenDispatchContext.Provider, { value: setConnectAppToApiDialogOpen, children: _jsx(CreateApiServerDomainDialogOpenDispatchContext.Provider, { value: setAddApiServerDomainDialogOpen, children: _jsxs(CreateApiServerDomainDialogOpenContext.Provider, { value: isAddApiServerDomainDialogOpen, children: [_jsxs(Card, { className: cardClassName, children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: cardTitle }), _jsx(CardDescription, { children: cardDescription })] }), _jsx(CardContent, { children: _jsx(ApiServersTable, { queryType: props.queryType, organization_id: props.organization_id, preloaded: props.preloaded, showConnectAppToApi: props.showConnectAppToApi, isOrgOwner: props.isOrgOwner }) }), _jsx(CardFooter, { children: _jsx("div", { className: "flex flex-row items-start justify-start gap-2" }) })] }), _jsx(CreateApiServerDialog, { clearApiServersCache: clearUseApiServersCache, owner_organization_id: props.queryType === "all"
20
- ? ownerOrganizationId
21
- : props.organization_id, open: createApiServerDialogOpen, onOpenChange: setCreateApiServerDialogOpen, uuid: props.uuid }), (props.queryType === "all" || props.showConnectAppToApi) && (_jsx(ConnectAppToApiDialog, { open: connectAppToApiDialogOpen, onOpenChange: setConnectAppToApiDialogOpen })), (props.queryType === "all" ||
49
+ return (_jsx(CreateApiServerDialogOpenDispatchContext.Provider, { value: setCreateApiServerDialogOpen, children: _jsx(ConnectAppToApiDialogOpenDispatchContext.Provider, { value: setConnectAppToApiDialogOpen, children: _jsx(CreateApiServerDomainDialogOpenDispatchContext.Provider, { value: setAddApiServerDomainDialogOpen, children: _jsxs(CreateApiServerDomainDialogOpenContext.Provider, { value: isAddApiServerDomainDialogOpen, children: [_jsxs(Card, { className: cardClassName, children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: cardTitle }), _jsx(CardDescription, { children: cardDescription })] }), _jsx(CardContent, { children: _jsx(ApiServersTable, { queryType: props.queryType, organization_id: props.organization_id, preloaded: props.preloaded, showConnectAppToApi: props.showConnectAppToApi, isOrgOwner: props.isOrgOwner, managedOrganizationIds: props.managedOrganizationIds, ownerTypeFilter: props.ownerTypeFilter, canCreate: props.canCreate ?? true }) }), _jsx(CardFooter, { children: _jsx("div", { className: "flex flex-row items-start justify-start gap-2" }) })] }), (props.canCreate ?? true) && createOwnership && (_jsx(CreateApiServerDialog, { clearApiServersCache: clearUseApiServersCache, ownership: createOwnership, open: createApiServerDialogOpen, onOpenChange: setCreateApiServerDialogOpen, uuid: props.uuid })), (props.queryType === "all" || props.showConnectAppToApi) && (_jsx(ConnectAppToApiDialog, { open: connectAppToApiDialogOpen, onOpenChange: setConnectAppToApiDialogOpen })), (props.queryType === "all" ||
50
+ props.queryType === "owned" ||
51
+ props.queryType === "accessible" ||
22
52
  (props.queryType === "org" && props.isOrgOwner)) && (_jsx(CreateApiServerDomainDialog, { open: typeof isAddApiServerDomainDialogOpen === "string", onOpenChange: (val) => {
23
53
  if (!val) {
24
54
  setAddApiServerDomainDialogOpen(false);
@@ -1 +1 @@
1
- {"version":3,"file":"api_servers_card.js","sourceRoot":"","sources":["../../../src/components/ApiServersCard/api_servers_card.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api_servers_card.js","sourceRoot":"","sources":["../../../src/components/ApiServersCard/api_servers_card.tsx"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import { ConnectAppToApiDialog } from "../ConnectAppToApiDialog";
11
11
  import { DeleteApiServerDialog } from "../DeleteApiServerDialog";
12
12
  import { CreateApiServerDomainDialogOpenDispatchContext } from "../CreateApiServerDomainDialog";
13
13
  import { ApiServersTableConfigContext } from "./ApiServersTableConfigContext";
14
+ import { useCanManageListedResource } from "../ResourceOwnerLabel/useCanManageListedResource";
14
15
  const menuItemClassname = cn("flex flex-row flex-nowrap gap-2 items-center justify-start");
15
16
  const menuItemIconClassname = cn("h-4 w-4");
16
17
  export function ApiServerRowActions({ api, }) {
@@ -19,16 +20,29 @@ export function ApiServerRowActions({ api, }) {
19
20
  const admin = useAdmin();
20
21
  const [connectDialogOpen, setConnectDialogOpen] = useState(false);
21
22
  const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
22
- const { showConnectAppToApi, isOrgOwner, queryType } = useContext(ApiServersTableConfigContext);
23
+ const { showConnectAppToApi, isOrgOwner, queryType, managedOrganizationIds } = useContext(ApiServersTableConfigContext);
23
24
  const openAddApiServerDomainDialog = useContext(CreateApiServerDomainDialogOpenDispatchContext);
24
25
  // The row's own 'hardcoded' flag identifies the auth server's built-in API
25
26
  // definition; comparing ids against a client-bundled constant would be
26
27
  // blind to the env-var-driven app id in white-label deployments.
27
- const isDeleteDisabled = api.hardcoded || (!showConnectAppToApi && !isOrgOwner);
28
+ // Whether the viewer may manage this particular API server: global
29
+ // admins, an organization owner/admin on an org page, the owning user of
30
+ // a user-owned API server, or (on the "accessible" list) an owner/admin
31
+ // of the owning organization. The server enforces every action.
32
+ const canManageApi = useCanManageListedResource({
33
+ resource: api,
34
+ queryType,
35
+ isOrgOwner,
36
+ managedOrganizationIds,
37
+ });
38
+ const isDeleteDisabled = api.hardcoded || !canManageApi;
28
39
  // Hardcoded API servers have no database row for a domain to reference;
29
40
  // their domains come from the server's environment configuration.
30
- const showAddDomain = !api.hardcoded &&
31
- ((admin && queryType === "all") || (isOrgOwner && queryType === "org"));
41
+ const showAddDomain = !api.hardcoded && canManageApi;
42
+ // Connecting an app requires owning the API server too, so only offer it
43
+ // on rows the viewer manages (or wherever the card asked for it, e.g. the
44
+ // admin list).
45
+ const showConnectForRow = showConnectAppToApi && (admin || canManageApi);
32
46
  return (_jsxs(_Fragment, { children: [_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", className: "h-8 w-8 p-0", "data-testid": "api-server-actions-button", children: [_jsx("span", { className: "sr-only", children: "Open menu" }), _jsx(MoreHorizontal, { className: "h-4 w-4" })] }) }), _jsxs(DropdownMenuContent, { align: "end", children: [_jsx(DropdownMenuLabel, { children: "Actions" }), _jsx(DropdownMenuItem, { asChild: true, className: menuItemClassname, children: _jsxs(Link, { href: `/apis/${api_server_id}`, children: [_jsx(Eye, { className: menuItemIconClassname }), " View API details"] }) }), _jsxs(DropdownMenuItem, { onClick: async (e) => {
33
47
  e.preventDefault();
34
48
  try {
@@ -52,7 +66,7 @@ export function ApiServerRowActions({ api, }) {
52
66
  description: `You can now paste: '${api_server_id}'`,
53
67
  });
54
68
  return;
55
- }, className: menuItemClassname, children: [_jsx(ClipboardCopy, { className: menuItemIconClassname }), " Copy API Server ID"] }), !api.hardcoded && (_jsx(Link, { href: `/apis/${api_server_id}/jwks-access-keys`, className: "hover:cursor-pointer", children: _jsxs(DropdownMenuItem, { className: menuItemClassname, children: [_jsx(Key, { className: menuItemIconClassname }), " Manage Access Keys"] }) })), showConnectAppToApi && (_jsxs(_Fragment, { children: [_jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { onClick: (e) => {
69
+ }, className: menuItemClassname, children: [_jsx(ClipboardCopy, { className: menuItemIconClassname }), " Copy API Server ID"] }), !api.hardcoded && (_jsx(Link, { href: `/apis/${api_server_id}/jwks-access-keys`, className: "hover:cursor-pointer", children: _jsxs(DropdownMenuItem, { className: menuItemClassname, children: [_jsx(Key, { className: menuItemIconClassname }), " Manage Access Keys"] }) })), showConnectForRow && (_jsxs(_Fragment, { children: [_jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { onClick: (e) => {
56
70
  e.preventDefault();
57
71
  setConnectDialogOpen(true);
58
72
  }, className: menuItemClassname, children: [_jsx(PlugZap, { className: menuItemIconClassname }), " Connect App to this API"] })] })), showAddDomain && (_jsxs(DropdownMenuItem, { onClick: () => {
@@ -61,6 +75,6 @@ export function ApiServerRowActions({ api, }) {
61
75
  }, className: menuItemClassname, children: [_jsx(EarthLock, { className: menuItemIconClassname }), " Add domain"] })), !isDeleteDisabled && (_jsxs(_Fragment, { children: [_jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { onClick: (e) => {
62
76
  e.preventDefault();
63
77
  setDeleteDialogOpen(true);
64
- }, className: cn(menuItemClassname, "text-destructive"), children: [_jsx(Trash, { className: menuItemIconClassname }), " Delete API Server"] })] }))] })] }), showConnectAppToApi && (_jsx(ConnectAppToApiDialog, { open: connectDialogOpen, onOpenChange: setConnectDialogOpen, preselectedApiServerId: api_server_id })), !isDeleteDisabled && (_jsx(DeleteApiServerDialog, { api_server_id: api_server_id, api_server_name: api.api_server_name, open: deleteDialogOpen, onOpenChange: setDeleteDialogOpen }))] }));
78
+ }, className: cn(menuItemClassname, "text-destructive"), children: [_jsx(Trash, { className: menuItemIconClassname }), " Delete API Server"] })] }))] })] }), showConnectForRow && (_jsx(ConnectAppToApiDialog, { open: connectDialogOpen, onOpenChange: setConnectDialogOpen, preselectedApiServerId: api_server_id })), !isDeleteDisabled && (_jsx(DeleteApiServerDialog, { api_server_id: api_server_id, api_server_name: api.api_server_name, open: deleteDialogOpen, onOpenChange: setDeleteDialogOpen }))] }));
65
79
  }
66
80
  //# sourceMappingURL=ApiServerRowActions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApiServerRowActions.js","sourceRoot":"","sources":["../../../src/components/ApiServersTable/ApiServerRowActions.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApiServerRowActions.js","sourceRoot":"","sources":["../../../src/components/ApiServersTable/ApiServerRowActions.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,23 @@
1
1
  import { type ReactElement } from "react";
2
2
  import type { ListApiServersQueryType } from "@schemavaults/app-definitions";
3
3
  import type { PreloadedApiServersTableDataWithDomainRefs } from "./preloaded_api_servers_table_data";
4
+ import { type OwnerTypeFilterValue } from "../OwnerTypeFilter";
4
5
  export interface ApiServersDatatableProps {
5
6
  queryType: ListApiServersQueryType;
6
7
  organization_id?: string;
7
8
  preloaded?: PreloadedApiServersTableDataWithDomainRefs | undefined;
8
9
  showConnectAppToApi?: boolean;
9
10
  isOrgOwner?: boolean;
11
+ /**
12
+ * For the "accessible" query: ids of the organizations in which the
13
+ * viewer is an owner/admin, used to decide which rows expose management
14
+ * actions.
15
+ */
16
+ managedOrganizationIds?: readonly string[];
17
+ /** Client-side filter on each row's resolved owner type. */
18
+ ownerTypeFilter?: OwnerTypeFilterValue;
19
+ /** Whether the "Create API" button is offered (default true). */
20
+ canCreate?: boolean;
10
21
  }
11
- export declare function ApiServersTable({ queryType, organization_id, preloaded, showConnectAppToApi, isOrgOwner, }: ApiServersDatatableProps): ReactElement;
22
+ export declare function ApiServersTable({ queryType, organization_id, preloaded, showConnectAppToApi, isOrgOwner, managedOrganizationIds, ownerTypeFilter, canCreate, }: ApiServersDatatableProps): ReactElement;
12
23
  export default ApiServersTable;
@@ -9,12 +9,17 @@ import { useAuth } from "@schemavaults/auth-react-provider";
9
9
  import { CreateApiServerDialogOpenDispatchContext, CreateApiServerDialogTrigger, } from "../CreateApiServerDialog";
10
10
  import { ConnectAppToApiDialogOpenDispatchContext, ConnectAppToApiDialogTrigger, } from "../ConnectAppToApiDialog";
11
11
  import { ApiServersTableConfigContext } from "./ApiServersTableConfigContext";
12
- function ApiServersTableHeaderButtons({ queryType, showConnectAppToApi, isOrgOwner, }) {
12
+ import { useOwnerTypeFilteredResources, } from "../OwnerTypeFilter";
13
+ function ApiServersTableHeaderButtons({ queryType, showConnectAppToApi, isOrgOwner, canCreate, }) {
13
14
  const onOpenChangeCreateApi = useContext(CreateApiServerDialogOpenDispatchContext);
14
15
  const onOpenChangeConnectAppToApi = useContext(ConnectAppToApiDialogOpenDispatchContext);
15
- return (_jsxs(_Fragment, { children: [(queryType === "all" || (queryType === "org" && isOrgOwner)) && (_jsx(CreateApiServerDialogTrigger, { onOpenChange: onOpenChangeCreateApi })), (queryType === "all" || showConnectAppToApi) && (_jsx(ConnectAppToApiDialogTrigger, { onOpenChange: onOpenChangeConnectAppToApi }))] }));
16
+ return (_jsxs(_Fragment, { children: [canCreate &&
17
+ (queryType === "all" ||
18
+ queryType === "owned" ||
19
+ queryType === "accessible" ||
20
+ (queryType === "org" && isOrgOwner)) && (_jsx(CreateApiServerDialogTrigger, { onOpenChange: onOpenChangeCreateApi })), (queryType === "all" || showConnectAppToApi) && (_jsx(ConnectAppToApiDialogTrigger, { onOpenChange: onOpenChangeConnectAppToApi }))] }));
16
21
  }
17
- export function ApiServersTable({ queryType, organization_id, preloaded, showConnectAppToApi, isOrgOwner, }) {
22
+ export function ApiServersTable({ queryType, organization_id, preloaded, showConnectAppToApi, isOrgOwner, managedOrganizationIds, ownerTypeFilter, canCreate = true, }) {
18
23
  const auth = useAuth();
19
24
  const authClient = auth.ready ? auth.client.current : undefined;
20
25
  const apis = useApiServersList({
@@ -23,28 +28,22 @@ export function ApiServersTable({ queryType, organization_id, preloaded, showCon
23
28
  organization_id,
24
29
  authClient,
25
30
  });
26
- const { isLoading, data } = apis;
31
+ const { isLoading } = apis;
32
+ const data = useOwnerTypeFilteredResources(apis.data, ownerTypeFilter);
27
33
  const columns = useMemo(() => {
28
34
  return getApiServersTableColumns(preloaded);
29
35
  }, [preloaded]);
30
36
  const HeaderButtons = useMemo(() => {
31
37
  return function ApiServersTableHeaderButtonsWithQueryType() {
32
- return _jsx(ApiServersTableHeaderButtons, { queryType: queryType, showConnectAppToApi: showConnectAppToApi, isOrgOwner: isOrgOwner });
38
+ return (_jsx(ApiServersTableHeaderButtons, { queryType: queryType, showConnectAppToApi: showConnectAppToApi, isOrgOwner: isOrgOwner, canCreate: canCreate }));
33
39
  };
34
- }, [queryType, showConnectAppToApi, isOrgOwner]);
35
- // Assert that 'owner_organization_id' field is present from server
36
- useMemo(() => {
37
- if (apis.data && Array.isArray(apis.data)) {
38
- if (!apis.data.every((api_server_definition) => api_server_definition.owner_organization_id)) {
39
- throw new TypeError("Received API server definition that is missing 'owner_organization_id' field!");
40
- }
41
- }
42
- }, [apis.data]);
40
+ }, [queryType, showConnectAppToApi, isOrgOwner, canCreate]);
43
41
  const contextValue = useMemo(() => ({
44
42
  showConnectAppToApi: showConnectAppToApi ?? false,
45
43
  isOrgOwner: isOrgOwner ?? false,
46
44
  queryType,
47
- }), [showConnectAppToApi, isOrgOwner, queryType]);
45
+ managedOrganizationIds,
46
+ }), [showConnectAppToApi, isOrgOwner, queryType, managedOrganizationIds]);
48
47
  if (!data && isLoading) {
49
48
  return (_jsx("div", { className: "min-h-48 w-full flex items-center justify-center", children: _jsx(Loader2, { className: "h-12 w-12 animate-spin" }) }));
50
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ApiServersTable.js","sourceRoot":"","sources":["../../../src/components/ApiServersTable/ApiServersTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApiServersTable.js","sourceRoot":"","sources":["../../../src/components/ApiServersTable/ApiServersTable.tsx"],"names":[],"mappings":"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"}
@@ -3,5 +3,11 @@ export interface ApiServersTableConfig {
3
3
  showConnectAppToApi: boolean;
4
4
  isOrgOwner: boolean;
5
5
  queryType?: ListApiServersQueryType;
6
+ /**
7
+ * For the "accessible" query: ids of the organizations in which the
8
+ * viewer is an owner/admin (decides which rows expose management
9
+ * actions).
10
+ */
11
+ managedOrganizationIds?: readonly string[];
6
12
  }
7
13
  export declare const ApiServersTableConfigContext: import("react").Context<ApiServersTableConfig>;
@@ -4,5 +4,6 @@ export const ApiServersTableConfigContext = createContext({
4
4
  showConnectAppToApi: false,
5
5
  isOrgOwner: false,
6
6
  queryType: undefined,
7
+ managedOrganizationIds: undefined,
7
8
  });
8
9
  //# sourceMappingURL=ApiServersTableConfigContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApiServersTableConfigContext.js","sourceRoot":"","sources":["../../../src/components/ApiServersTable/ApiServersTableConfigContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAQtC,MAAM,CAAC,MAAM,4BAA4B,GACvC,aAAa,CAAwB;IACnC,mBAAmB,EAAE,KAAK;IAC1B,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC"}
1
+ {"version":3,"file":"ApiServersTableConfigContext.js","sourceRoot":"","sources":["../../../src/components/ApiServersTable/ApiServersTableConfigContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AActC,MAAM,CAAC,MAAM,4BAA4B,GACvC,aAAa,CAAwB;IACnC,mBAAmB,EAAE,KAAK;IAC1B,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,SAAS;IACpB,sBAAsB,EAAE,SAAS;CAClC,CAAC,CAAC"}
@@ -4,6 +4,7 @@ import Link from "next/link";
4
4
  import { Checkbox } from "@schemavaults/ui";
5
5
  import { ApiServerRowActions } from "./ApiServerRowActions";
6
6
  import ApiServerDomainsList from "./ApiServerDomainsList";
7
+ import { ResourceOwnerLabel } from "../ResourceOwnerLabel";
7
8
  export function getApiServersTableColumns(preloaded) {
8
9
  const columns = [
9
10
  {
@@ -40,7 +41,8 @@ export function getApiServersTableColumns(preloaded) {
40
41
  {
41
42
  id: "owner_organization_id",
42
43
  accessorKey: "owner_organization_id",
43
- header: "Owner Organization",
44
+ header: "Owner",
45
+ cell: ({ row }) => (_jsx(ResourceOwnerLabel, { resource: row.original })),
44
46
  },
45
47
  {
46
48
  id: "domains",
@@ -1 +1 @@
1
- {"version":3,"file":"columns.js","sourceRoot":"","sources":["../../../src/components/ApiServersTable/columns.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"columns.js","sourceRoot":"","sources":["../../../src/components/ApiServersTable/columns.tsx"],"names":[],"mappings":"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"}
@@ -16,7 +16,10 @@ export declare function useApiServersList({ queryType, initialData, organization
16
16
  created_at: number;
17
17
  public: boolean;
18
18
  hardcoded: boolean;
19
+ owner_type?: "platform" | "organization" | "user" | undefined;
19
20
  owner_organization_id?: string | null | undefined;
21
+ owner_uid?: string | null | undefined;
22
+ created_by?: string | null | undefined;
20
23
  }[], any, {
21
24
  fallbackData: {
22
25
  api_server_id: string;
@@ -25,7 +28,10 @@ export declare function useApiServersList({ queryType, initialData, organization
25
28
  created_at: number;
26
29
  public: boolean;
27
30
  hardcoded: boolean;
31
+ owner_type?: "platform" | "organization" | "user" | undefined;
28
32
  owner_organization_id?: string | null | undefined;
33
+ owner_uid?: string | null | undefined;
34
+ created_by?: string | null | undefined;
29
35
  }[] | undefined;
30
36
  }>;
31
37
  export default useApiServersList;
@@ -1,6 +1,7 @@
1
1
  import { type ReactElement } from "react";
2
2
  import { type PreloadedAppsTableDataWithDomainRefs } from "../AppsTable";
3
3
  import type { ListAppsQueryType } from "@schemavaults/app-definitions";
4
+ import type { OwnerTypeFilterValue } from "../OwnerTypeFilter";
4
5
  export interface AppsCardProps {
5
6
  cardTitle?: string;
6
7
  cardDescription?: string;
@@ -10,6 +11,20 @@ export interface AppsCardProps {
10
11
  organization_id?: string;
11
12
  uuid: () => string;
12
13
  isOrgOwner?: boolean;
14
+ /**
15
+ * For the "accessible" query: ids of the organizations in which the
16
+ * viewer is an owner/admin (decides which rows expose management
17
+ * actions).
18
+ */
19
+ managedOrganizationIds?: readonly string[];
20
+ /** Client-side filter on each row's resolved owner type. */
21
+ ownerTypeFilter?: OwnerTypeFilterValue;
22
+ /**
23
+ * Whether the card offers app creation at all (default true). Pages set
24
+ * this to false when the `allow_user_owned_resource_creation` server
25
+ * setting is disabled for a non-admin viewer.
26
+ */
27
+ canCreate?: boolean;
13
28
  }
14
29
  export declare function AppsCard(props: AppsCardProps): ReactElement;
15
30
  export default AppsCard;
@@ -3,14 +3,49 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
3
3
  import { useState } from "react";
4
4
  import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, cn, } from "@schemavaults/ui";
5
5
  import { AppsTable, clearUseAppsListCache, } from "../AppsTable";
6
+ import { useCurrentUser } from "@schemavaults/auth-react-provider";
6
7
  import CreateAppDialog, { CreateAppDialogOpenDispatchContext, } from "../CreateAppDialog";
7
8
  import CreateAppDomainDialog, { CreateAppDomainDialogOpenContext, CreateAppDomainDialogOpenDispatchContext, } from "../CreateAppDomainDialog";
8
9
  import AuthorizeClientApplicationDialog, { AuthorizeClientApplicationDialogOpenDispatchContext, } from "../AuthorizeClientApplicationDialog";
9
10
  import { useAuthUiFriendlyName } from "../FriendlyNameProvider";
10
11
  import { useAuthUiOwnerOrganizationId } from "../OwnerOrganizationProvider";
12
+ /**
13
+ * @description Who an app created from a card of the given query type
14
+ * belongs to: platform-owned from the admin "all" list, organization-owned
15
+ * from an organization page, user-owned from the "owned" (your
16
+ * applications) card. Returns null when the card cannot create apps.
17
+ */
18
+ function resolveCreateOwnershipForCard(queryType, organization_id, platformOrganizationId, currentUserUid) {
19
+ switch (queryType) {
20
+ case "all":
21
+ return { owner_type: "platform" };
22
+ case "org":
23
+ return organization_id && organization_id !== platformOrganizationId
24
+ ? { owner_type: "organization", owner_organization_id: organization_id }
25
+ : { owner_type: "platform" };
26
+ case "owned":
27
+ case "accessible":
28
+ // The "accessible" page creates personal apps; organization-owned
29
+ // apps are created from the organization's page and platform-owned
30
+ // ones from the admin console.
31
+ return currentUserUid
32
+ ? { owner_type: "user", owner_uid: currentUserUid }
33
+ : null;
34
+ default:
35
+ return null;
36
+ }
37
+ }
11
38
  export function AppsCard(props) {
12
39
  const friendlyName = useAuthUiFriendlyName();
13
40
  const ownerOrganizationId = useAuthUiOwnerOrganizationId();
41
+ const currentUser = useCurrentUser();
42
+ const createOwnership = resolveCreateOwnershipForCard(props.queryType, props.organization_id, ownerOrganizationId, currentUser?.uid);
43
+ const canCreateApps = (props.canCreate ?? true) &&
44
+ !!createOwnership &&
45
+ (props.queryType === "all" ||
46
+ props.queryType === "owned" ||
47
+ props.queryType === "accessible" ||
48
+ (props.queryType === "org" && !!props.isOrgOwner));
14
49
  const cardTitle = props.cardTitle ?? "Applications";
15
50
  const cardDescription = props.cardDescription ??
16
51
  `View and manage which applications are allowed to access ${friendlyName} APIs on your behalf.`;
@@ -18,11 +53,7 @@ export function AppsCard(props) {
18
53
  const [createAppDialogOpen, setCreateAppDialogOpen] = useState(false);
19
54
  const [isAddAppDomainDialogOpen, setAddAppDomainDialogOpen] = useState(false);
20
55
  const [authorizeAppDialogOpen, setAuthorizeAppDialogOpen] = useState(false);
21
- return (_jsx(CreateAppDialogOpenDispatchContext.Provider, { value: setCreateAppDialogOpen, children: _jsx(AuthorizeClientApplicationDialogOpenDispatchContext.Provider, { value: setAuthorizeAppDialogOpen, children: _jsx(CreateAppDomainDialogOpenDispatchContext.Provider, { value: setAddAppDomainDialogOpen, children: _jsxs(CreateAppDomainDialogOpenContext.Provider, { value: isAddAppDomainDialogOpen, children: [_jsxs(Card, { className: cardClassName, children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: cardTitle }), _jsx(CardDescription, { children: cardDescription })] }), _jsx(CardContent, { children: _jsx(AppsTable, { queryType: props.queryType, preloaded: props.preloaded, organization_id: props.organization_id, isOrgOwner: props.isOrgOwner }) }), _jsx(CardFooter, { children: _jsx("div", { className: "flex flex-row items-start justify-start gap-2" }) })] }), _jsxs(_Fragment, { children: [(props.queryType === "all" ||
22
- (props.queryType === "org" && props.isOrgOwner)) && (_jsx(CreateAppDialog, { clearFrontendAppsCache: clearUseAppsListCache, owner_organization_id: props.queryType === "all"
23
- ? ownerOrganizationId
24
- : props.organization_id, open: createAppDialogOpen, onOpenChange: setCreateAppDialogOpen, uuid: props.uuid })), props.queryType === "authorized" && (_jsx(AuthorizeClientApplicationDialog, { open: authorizeAppDialogOpen, onOpenChange: setAuthorizeAppDialogOpen })), (props.queryType === "all" ||
25
- (props.queryType === "org" && props.isOrgOwner)) && (_jsx(CreateAppDomainDialog, { open: typeof isAddAppDomainDialogOpen === "string", onOpenChange: (val) => {
56
+ return (_jsx(CreateAppDialogOpenDispatchContext.Provider, { value: setCreateAppDialogOpen, children: _jsx(AuthorizeClientApplicationDialogOpenDispatchContext.Provider, { value: setAuthorizeAppDialogOpen, children: _jsx(CreateAppDomainDialogOpenDispatchContext.Provider, { value: setAddAppDomainDialogOpen, children: _jsxs(CreateAppDomainDialogOpenContext.Provider, { value: isAddAppDomainDialogOpen, children: [_jsxs(Card, { className: cardClassName, children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: cardTitle }), _jsx(CardDescription, { children: cardDescription })] }), _jsx(CardContent, { children: _jsx(AppsTable, { queryType: props.queryType, preloaded: props.preloaded, organization_id: props.organization_id, isOrgOwner: props.isOrgOwner, managedOrganizationIds: props.managedOrganizationIds, ownerTypeFilter: props.ownerTypeFilter, canCreate: props.canCreate ?? true }) }), _jsx(CardFooter, { children: _jsx("div", { className: "flex flex-row items-start justify-start gap-2" }) })] }), _jsxs(_Fragment, { children: [canCreateApps && createOwnership && (_jsx(CreateAppDialog, { clearFrontendAppsCache: clearUseAppsListCache, ownership: createOwnership, open: createAppDialogOpen, onOpenChange: setCreateAppDialogOpen, uuid: props.uuid })), props.queryType === "authorized" && (_jsx(AuthorizeClientApplicationDialog, { open: authorizeAppDialogOpen, onOpenChange: setAuthorizeAppDialogOpen })), canCreateApps && (_jsx(CreateAppDomainDialog, { open: typeof isAddAppDomainDialogOpen === "string", onOpenChange: (val) => {
26
57
  if (!val) {
27
58
  setAddAppDomainDialogOpen(false);
28
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"apps_card.js","sourceRoot":"","sources":["../../../src/components/AppsCard/apps_card.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apps_card.js","sourceRoot":"","sources":["../../../src/components/AppsCard/apps_card.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,22 @@
1
1
  import { type ReactElement } from "react";
2
2
  import type { ListAppsQueryType } from "@schemavaults/app-definitions";
3
3
  import type { PreloadedAppsTableDataWithDomainRefs } from "./preloaded_apps_table_data";
4
+ import { type OwnerTypeFilterValue } from "../OwnerTypeFilter";
4
5
  export interface AppsDatatableProps {
5
6
  queryType: ListAppsQueryType;
6
7
  preloaded?: PreloadedAppsTableDataWithDomainRefs | undefined;
7
8
  organization_id?: string;
8
9
  isOrgOwner?: boolean;
10
+ /**
11
+ * For the "accessible" query: ids of the organizations in which the
12
+ * viewer is an owner/admin, used to decide which rows expose management
13
+ * actions.
14
+ */
15
+ managedOrganizationIds?: readonly string[];
16
+ /** Client-side filter on each row's resolved owner type. */
17
+ ownerTypeFilter?: OwnerTypeFilterValue;
18
+ /** Whether the "Create app" button is offered (default true). */
19
+ canCreate?: boolean;
9
20
  }
10
- export declare function AppsTable({ queryType, preloaded, organization_id, isOrgOwner, }: AppsDatatableProps): ReactElement;
21
+ export declare function AppsTable({ queryType, preloaded, organization_id, isOrgOwner, managedOrganizationIds, ownerTypeFilter, canCreate, }: AppsDatatableProps): ReactElement;
11
22
  export default AppsTable;
@@ -8,11 +8,16 @@ import { CreateAppDialogTrigger } from "../CreateAppDialog";
8
8
  import { AuthorizeClientApplicationDialogTrigger } from "../AuthorizeClientApplicationDialog";
9
9
  import { Loader2 } from "lucide-react";
10
10
  import { useAuth } from "@schemavaults/auth-react-provider";
11
- function AppsTableHeaderButtons({ queryType, isOrgOwner, }) {
11
+ import { useOwnerTypeFilteredResources, } from "../OwnerTypeFilter";
12
+ function AppsTableHeaderButtons({ queryType, isOrgOwner, canCreate, }) {
12
13
  return (_jsxs(_Fragment, { children: [queryType === "authorized" && ( // From a user's list of authorized apps, allow them to add more authorized apps
13
- _jsx(AuthorizeClientApplicationDialogTrigger, {})), (queryType === "all" || (queryType === "org" && isOrgOwner)) && (_jsx(CreateAppDialogTrigger, {}))] }));
14
+ _jsx(AuthorizeClientApplicationDialogTrigger, {})), canCreate &&
15
+ (queryType === "all" ||
16
+ queryType === "owned" ||
17
+ queryType === "accessible" ||
18
+ (queryType === "org" && isOrgOwner)) && _jsx(CreateAppDialogTrigger, {})] }));
14
19
  }
15
- export function AppsTable({ queryType, preloaded, organization_id, isOrgOwner, }) {
20
+ export function AppsTable({ queryType, preloaded, organization_id, isOrgOwner, managedOrganizationIds, ownerTypeFilter, canCreate = true, }) {
16
21
  const auth = useAuth();
17
22
  const authClient = auth.ready ? auth.client.current : undefined;
18
23
  const apps = useAppsList({
@@ -21,15 +26,16 @@ export function AppsTable({ queryType, preloaded, organization_id, isOrgOwner, }
21
26
  organization_id,
22
27
  authClient,
23
28
  });
24
- const { isLoading, data } = apps;
29
+ const { isLoading } = apps;
30
+ const data = useOwnerTypeFilteredResources(apps.data, ownerTypeFilter);
25
31
  const columns = useMemo(() => {
26
- return getAppsTableColumns(queryType, preloaded, isOrgOwner);
27
- }, [queryType, preloaded, isOrgOwner]);
32
+ return getAppsTableColumns(queryType, preloaded, isOrgOwner, managedOrganizationIds);
33
+ }, [queryType, preloaded, isOrgOwner, managedOrganizationIds]);
28
34
  const HeaderButtons = useMemo(() => {
29
35
  return function AppsTableHeaderButtonsWithQueryType() {
30
- return (_jsx(AppsTableHeaderButtons, { queryType: queryType, isOrgOwner: isOrgOwner }));
36
+ return (_jsx(AppsTableHeaderButtons, { queryType: queryType, isOrgOwner: isOrgOwner, canCreate: canCreate }));
31
37
  };
32
- }, [queryType, isOrgOwner]);
38
+ }, [queryType, isOrgOwner, canCreate]);
33
39
  if (!data && isLoading) {
34
40
  return (_jsx("div", { className: "min-h-48 w-full flex items-center justify-center", children: _jsx(Loader2, { className: "h-12 w-12 animate-spin" }) }));
35
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AppsTable.js","sourceRoot":"","sources":["../../../src/components/AppsTable/AppsTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AppsTable.js","sourceRoot":"","sources":["../../../src/components/AppsTable/AppsTable.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { ColumnDef } from "@schemavaults/ui";
2
2
  import type { ListAppsQueryType, SchemaVaultsApp } from "@schemavaults/app-definitions";
3
3
  import type { PreloadedAppsTableDataWithDomainRefs } from "./preloaded_apps_table_data";
4
- export declare function getAppsTableColumns(queryType: ListAppsQueryType, preloaded?: PreloadedAppsTableDataWithDomainRefs, isOrgOwner?: boolean): ColumnDef<SchemaVaultsApp>[];
4
+ export declare function getAppsTableColumns(queryType: ListAppsQueryType, preloaded?: PreloadedAppsTableDataWithDomainRefs, isOrgOwner?: boolean, managedOrganizationIds?: readonly string[]): ColumnDef<SchemaVaultsApp>[];