forked from baron/baron-sso
fix: follow rules of hooks in TenantSchemaPage
This commit is contained in:
@@ -56,41 +56,10 @@ export function TenantSchemaPage() {
|
|||||||
const canAccess =
|
const canAccess =
|
||||||
profile?.role === "super_admin" || profile?.role === "tenant_admin";
|
profile?.role === "super_admin" || profile?.role === "tenant_admin";
|
||||||
|
|
||||||
if (isProfileLoading) {
|
|
||||||
return (
|
|
||||||
<div className="p-8 text-center animate-pulse text-muted-foreground">
|
|
||||||
{t("msg.common.loading", "로딩 중...")}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!canAccess) {
|
|
||||||
return (
|
|
||||||
<div className="p-12 text-center space-y-4 bg-destructive/5 rounded-2xl border border-destructive/20 mt-6">
|
|
||||||
<h3 className="text-xl font-bold text-destructive">
|
|
||||||
{t("msg.common.forbidden", "접근 권한이 없습니다.")}
|
|
||||||
</h3>
|
|
||||||
<p className="text-muted-foreground">
|
|
||||||
{t(
|
|
||||||
"msg.admin.tenants.schema.forbidden_desc",
|
|
||||||
"사용자 스키마 설정은 관리자만 접근할 수 있습니다.",
|
|
||||||
)}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!tenantId) {
|
|
||||||
return (
|
|
||||||
<div className="p-8 text-center text-muted-foreground">
|
|
||||||
{t("msg.admin.tenants.schema.missing_id", "테넌트 ID가 없습니다.")}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const tenantQuery = useQuery({
|
const tenantQuery = useQuery({
|
||||||
queryKey: ["tenant", tenantId],
|
queryKey: ["tenant", tenantId],
|
||||||
queryFn: () => fetchTenant(tenantId),
|
queryFn: () => fetchTenant(tenantId!),
|
||||||
|
enabled: !!tenantId && canAccess,
|
||||||
});
|
});
|
||||||
|
|
||||||
const [fields, setFields] = useState<SchemaField[]>([]);
|
const [fields, setFields] = useState<SchemaField[]>([]);
|
||||||
@@ -130,7 +99,7 @@ export function TenantSchemaPage() {
|
|||||||
newConfig.loginIdField = undefined;
|
newConfig.loginIdField = undefined;
|
||||||
newConfig.userSchema = newFields;
|
newConfig.userSchema = newFields;
|
||||||
|
|
||||||
return updateTenant(tenantId, {
|
return updateTenant(tenantId!, {
|
||||||
config: newConfig,
|
config: newConfig,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@@ -151,6 +120,38 @@ export function TenantSchemaPage() {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (isProfileLoading) {
|
||||||
|
return (
|
||||||
|
<div className="p-8 text-center animate-pulse text-muted-foreground">
|
||||||
|
{t("msg.common.loading", "로딩 중...")}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!canAccess) {
|
||||||
|
return (
|
||||||
|
<div className="p-12 text-center space-y-4 bg-destructive/5 rounded-2xl border border-destructive/20 mt-6">
|
||||||
|
<h3 className="text-xl font-bold text-destructive">
|
||||||
|
{t("msg.common.forbidden", "접근 권한이 없습니다.")}
|
||||||
|
</h3>
|
||||||
|
<p className="text-muted-foreground">
|
||||||
|
{t(
|
||||||
|
"msg.admin.tenants.schema.forbidden_desc",
|
||||||
|
"사용자 스키마 설정은 관리자만 접근할 수 있습니다.",
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!tenantId) {
|
||||||
|
return (
|
||||||
|
<div className="p-8 text-center text-muted-foreground">
|
||||||
|
{t("msg.admin.tenants.schema.missing_id", "테넌트 ID가 없습니다.")}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const addField = () => {
|
const addField = () => {
|
||||||
setFields([
|
setFields([
|
||||||
...fields,
|
...fields,
|
||||||
|
|||||||
Reference in New Issue
Block a user