misc: added signup option filtering

This commit is contained in:
Sheen Capadngan
2024-06-27 13:53:12 +08:00
parent 92a663a17d
commit d6881e2e68
@@ -1,9 +1,13 @@
import { useCallback } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import Link from "next/link"; import Link from "next/link";
import { faGithub, faGitlab, faGoogle } from "@fortawesome/free-brands-svg-icons"; import { faGithub, faGitlab, faGoogle } from "@fortawesome/free-brands-svg-icons";
import { faEnvelope } from "@fortawesome/free-regular-svg-icons"; import { faEnvelope } from "@fortawesome/free-regular-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { useServerConfig } from "@app/context";
import { LoginMethod } from "@app/hooks/api/admin/types";
import { Button } from "../v2"; import { Button } from "../v2";
export default function InitialSignupStep({ export default function InitialSignupStep({
@@ -12,12 +16,20 @@ export default function InitialSignupStep({
setIsSignupWithEmail: (value: boolean) => void; setIsSignupWithEmail: (value: boolean) => void;
}) { }) {
const { t } = useTranslation(); const { t } = useTranslation();
const { config } = useServerConfig();
const shouldDisplaySignupMethod = useCallback(
(method: LoginMethod) =>
!config.enabledLoginMethods || config.enabledLoginMethods.includes(method),
[config]
);
return ( return (
<div className="mx-auto flex w-full flex-col items-center justify-center"> <div className="mx-auto flex w-full flex-col items-center justify-center">
<h1 className="mb-8 bg-gradient-to-b from-white to-bunker-200 bg-clip-text text-center text-xl font-medium text-transparent"> <h1 className="mb-8 bg-gradient-to-b from-white to-bunker-200 bg-clip-text text-center text-xl font-medium text-transparent">
{t("signup.initial-title")} {t("signup.initial-title")}
</h1> </h1>
{shouldDisplaySignupMethod(LoginMethod.GOOGLE) && (
<div className="w-1/4 min-w-[20rem] rounded-md lg:w-1/6"> <div className="w-1/4 min-w-[20rem] rounded-md lg:w-1/6">
<Button <Button
colorSchema="primary" colorSchema="primary"
@@ -32,6 +44,8 @@ export default function InitialSignupStep({
{t("signup.continue-with-google")} {t("signup.continue-with-google")}
</Button> </Button>
</div> </div>
)}
{shouldDisplaySignupMethod(LoginMethod.GITHUB) && (
<div className="mt-4 w-1/4 min-w-[20rem] rounded-md lg:w-1/6"> <div className="mt-4 w-1/4 min-w-[20rem] rounded-md lg:w-1/6">
<Button <Button
colorSchema="primary" colorSchema="primary"
@@ -46,6 +60,8 @@ export default function InitialSignupStep({
Continue with GitHub Continue with GitHub
</Button> </Button>
</div> </div>
)}
{shouldDisplaySignupMethod(LoginMethod.GITLAB) && (
<div className="mt-4 w-1/4 min-w-[20rem] rounded-md lg:w-1/6"> <div className="mt-4 w-1/4 min-w-[20rem] rounded-md lg:w-1/6">
<Button <Button
colorSchema="primary" colorSchema="primary"
@@ -60,6 +76,8 @@ export default function InitialSignupStep({
Continue with GitLab Continue with GitLab
</Button> </Button>
</div> </div>
)}
{shouldDisplaySignupMethod(LoginMethod.EMAIL) && (
<div className="mt-4 w-1/4 min-w-[20rem] rounded-md text-center lg:w-1/6"> <div className="mt-4 w-1/4 min-w-[20rem] rounded-md text-center lg:w-1/6">
<Button <Button
colorSchema="primary" colorSchema="primary"
@@ -73,6 +91,7 @@ export default function InitialSignupStep({
Continue with Email Continue with Email
</Button> </Button>
</div> </div>
)}
<div className="mt-6 w-1/4 min-w-[20rem] px-8 text-center text-xs text-bunker-400 lg:w-1/6"> <div className="mt-6 w-1/4 min-w-[20rem] px-8 text-center text-xs text-bunker-400 lg:w-1/6">
{t("signup.create-policy")} {t("signup.create-policy")}
</div> </div>