chore: update identity provider id

This commit is contained in:
Steven
2024-08-12 23:41:56 +08:00
parent 80304070e7
commit ea7ea0ac24
15 changed files with 277 additions and 270 deletions

View File

@ -3,6 +3,7 @@ import { isUndefined } from "lodash-es";
import { useState } from "react";
import { toast } from "react-hot-toast";
import { useTranslation } from "react-i18next";
import { v4 as uuidv4 } from "uuid";
import { workspaceServiceClient } from "@/grpcweb";
import { absolutifyLink } from "@/helpers/utils";
import useLoading from "@/hooks/useLoading";
@ -26,6 +27,7 @@ const CreateIdentityProviderDrawer: React.FC<Props> = (props: Props) => {
const [state, setState] = useState<State>({
identityProviderCreate: IdentityProvider.fromPartial(
identityProvider || {
id: uuidv4(),
type: IdentityProvider_Type.OAUTH2,
config: {
oauth2: IdentityProviderConfig_OAuth2Config.fromPartial({
@ -46,14 +48,6 @@ const CreateIdentityProviderDrawer: React.FC<Props> = (props: Props) => {
});
};
const handleNameInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
setPartialState({
identityProviderCreate: Object.assign(state.identityProviderCreate, {
name: e.target.value,
}),
});
};
const handleTitleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
setPartialState({
identityProviderCreate: Object.assign(state.identityProviderCreate, {
@ -102,7 +96,7 @@ const CreateIdentityProviderDrawer: React.FC<Props> = (props: Props) => {
};
const onSave = async () => {
if (!state.identityProviderCreate.name || !state.identityProviderCreate.title) {
if (!state.identityProviderCreate.id || !state.identityProviderCreate.title) {
toast.error("Please fill in required fields.");
return;
}
@ -112,7 +106,7 @@ const CreateIdentityProviderDrawer: React.FC<Props> = (props: Props) => {
await workspaceServiceClient.updateWorkspaceSetting({
setting: {
identityProviders: workspaceStore.setting.identityProviders.map((idp) =>
idp.name === state.identityProviderCreate.name ? state.identityProviderCreate : idp,
idp.id === state.identityProviderCreate.id ? state.identityProviderCreate : idp,
),
},
updateMask: ["identity_providers"],
@ -143,18 +137,6 @@ const CreateIdentityProviderDrawer: React.FC<Props> = (props: Props) => {
<ModalClose />
<DialogContent className="w-full max-w-full">
<div className="overflow-y-auto w-full mt-2 px-4 pb-4 sm:w-[24rem]">
<div className="w-full flex flex-col justify-start items-start mb-3">
<span className="mb-2">
Name <span className="text-red-600">*</span>
</span>
<Input
className="w-full"
type="text"
placeholder="The unique name of your identity provider"
value={state.identityProviderCreate.name}
onChange={handleNameInputChange}
/>
</div>
<div className="w-full flex flex-col justify-start items-start mb-3">
<span className="mb-2">
Title <span className="text-red-600">*</span>
@ -169,8 +151,13 @@ const CreateIdentityProviderDrawer: React.FC<Props> = (props: Props) => {
/>
</div>
</div>
<Divider className="!mb-3" />
{isCreating && (
<p className="border rounded-md p-2 text-sm w-full mb-2 break-all">Redirect URL: {absolutifyLink("/auth/callback")}</p>
<p className="shadow-sm rounded-md py-1 px-2 bg-zinc-100 dark:bg-zinc-900 text-sm w-full mb-2 break-all">
<span className="opacity-60">Redirect URL</span>
<br />
<code>{absolutifyLink("/auth/callback")}</code>
</p>
)}
<div className="w-full flex flex-col justify-start items-start mb-3">
<span className="mb-2">

View File

@ -38,7 +38,7 @@ const SSOSection = () => {
try {
await workspaceServiceClient.updateWorkspaceSetting({
setting: {
identityProviders: identityProviderList.filter((idp) => idp.name !== identityProvider.name),
identityProviders: identityProviderList.filter((idp) => idp.id !== identityProvider.id),
},
updateMask: ["identity_providers"],
});
@ -92,10 +92,8 @@ const SSOSection = () => {
</thead>
<tbody className="divide-y divide-gray-200 dark:divide-zinc-800">
{identityProviderList.map((identityProvider) => (
<tr key={identityProvider.name}>
<td className="whitespace-nowrap py-2 pl-4 pr-3 text-sm text-gray-900 dark:text-gray-500">
{identityProvider.name}
</td>
<tr key={identityProvider.id}>
<td className="whitespace-nowrap py-2 pl-4 pr-3 text-sm text-gray-900 dark:text-gray-500">{identityProvider.id}</td>
<td className="whitespace-nowrap px-3 py-2 text-sm text-gray-500">{identityProvider.title}</td>
<td className="relative whitespace-nowrap py-2 pl-3 pr-4 text-right text-sm">
<IconButton