login attached to main body
This commit is contained in:
parent
b15f58c319
commit
4bdac8aa61
|
|
@ -1,6 +0,0 @@
|
||||||
'use server';
|
|
||||||
import Login from "@/webPages/auth/Login/page";
|
|
||||||
|
|
||||||
const LoginPage = async () => { return <Login language="en" /> };
|
|
||||||
|
|
||||||
export default LoginPage;
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
'use server';
|
||||||
|
import { AuthLayout } from "@/layouts/auth/layout";
|
||||||
|
import { AuthServerProps } from "@/validations/mutual/pages/props";
|
||||||
|
import getPage from "@/webPages/getPage";
|
||||||
|
|
||||||
|
const AuthPageEn = async ({ params, searchParams }: AuthServerProps) => {
|
||||||
|
const lang = "en";
|
||||||
|
const awaitedParams = await params;
|
||||||
|
const awaitedSearchParams = await searchParams;
|
||||||
|
const pageUrlFromParams = `/${awaitedParams.page?.join("/")}` || "/login";
|
||||||
|
const FoundPage = getPage(pageUrlFromParams, { language: lang, query: awaitedSearchParams });
|
||||||
|
return <AuthLayout lang={lang} page={FoundPage} activePageUrl={pageUrlFromParams} />
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AuthPageEn;
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
'use server';
|
||||||
|
import { AuthServerProps } from "@/validations/mutual/pages/props";
|
||||||
|
import { AuthLayout } from "@/layouts/auth/layout";
|
||||||
|
import getPage from "@/webPages/getPage";
|
||||||
|
|
||||||
|
const AuthPageTr = async ({ params, searchParams }: AuthServerProps) => {
|
||||||
|
const lang = "tr";
|
||||||
|
const awaitedParams = await params;
|
||||||
|
const awaitedSearchParams = await searchParams;
|
||||||
|
const pageUrlFromParams = `/${awaitedParams.page?.join("/")}` || "/login";
|
||||||
|
const FoundPage = getPage(pageUrlFromParams, { language: lang, query: awaitedSearchParams });
|
||||||
|
return <AuthLayout lang={lang} page={FoundPage} activePageUrl={pageUrlFromParams} />
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AuthPageTr;
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
import type { Metadata } from "next";
|
|
||||||
import { Suspense } from "react";
|
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
|
||||||
title: "WAG Frontend",
|
|
||||||
description: "WAG Frontend Application",
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function AuthLayout({
|
|
||||||
children,
|
|
||||||
}: {
|
|
||||||
children: React.ReactNode;
|
|
||||||
}) {
|
|
||||||
return (
|
|
||||||
<div className="min-h-screen min-w-screen flex h-screen w-screen overflow-hidden">
|
|
||||||
<div className="w-1/4">
|
|
||||||
<div className="flex flex-col items-center justify-center h-screen bg-purple-600">
|
|
||||||
<div className="text-2xl font-bold">WAG Frontend</div>
|
|
||||||
<div className="text-sm text-gray-500 mt-4">
|
|
||||||
Welcome to the WAG Frontend Application
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="w-3/4 text-black">
|
|
||||||
<Suspense fallback={<div>Loading...</div>}>{children}</Suspense>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { loginViaAccessKeys } from "@/apicalls/custom/login/login";
|
import { loginViaAccessKeys } from "@/apicalls/custom/login/login";
|
||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
import { loginSchemaEmail } from "@/webPages/auth/Login/schemas";
|
import { loginSchemaEmail } from "@/webPages/auth/login/schemas";
|
||||||
|
|
||||||
export async function POST(req: Request): Promise<NextResponse> {
|
export async function POST(req: Request): Promise<NextResponse> {
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { loginSelectOccupant } from "@/apicalls/login/login";
|
import { loginSelectOccupant } from "@/apicalls/custom/login/login";
|
||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
|
|
||||||
const loginSchemaOccupant = z.object({
|
const loginSchemaOccupant = z.object({
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import { HeaderProps } from "@/validations/mutual/dashboard/props";
|
||||||
import LanguageSelectionComponent from "@/components/mutual/languageSelection/component";
|
import LanguageSelectionComponent from "@/components/mutual/languageSelection/component";
|
||||||
import { langGetKey } from "@/lib/langGet";
|
import { langGetKey } from "@/lib/langGet";
|
||||||
|
|
||||||
const HeaderComponent: FC<HeaderProps> = ({ translations, lang, activePageUrl }) => {
|
const HeaderComponent: FC<HeaderProps> = ({ translations, lang, activePageUrl, prefix }) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex justify-between h-24 items-center p-4 border-emerald-150 border-b-2 shadow-sm backdrop-blur-sm sticky top-0 z-50 bg-emerald-50">
|
<div className="flex justify-between h-24 items-center p-4 border-emerald-150 border-b-2 shadow-sm backdrop-blur-sm sticky top-0 z-50 bg-emerald-50">
|
||||||
|
|
@ -12,7 +12,7 @@ const HeaderComponent: FC<HeaderProps> = ({ translations, lang, activePageUrl })
|
||||||
<p className="text-2xl font-bold mx-3">{langGetKey(translations, 'selectedPage')} :</p>
|
<p className="text-2xl font-bold mx-3">{langGetKey(translations, 'selectedPage')} :</p>
|
||||||
<p className="text-lg font-bold mx-3"> {langGetKey(translations, 'page')}</p>
|
<p className="text-lg font-bold mx-3"> {langGetKey(translations, 'page')}</p>
|
||||||
</div>
|
</div>
|
||||||
<LanguageSelectionComponent lang={lang} activePage={activePageUrl} />
|
<LanguageSelectionComponent lang={lang} activePage={activePageUrl} prefix={prefix} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,9 @@ import { LanguageTypes } from "@/validations/mutual/language/validations";
|
||||||
|
|
||||||
import LanguageSelectionItem from "./languageItem";
|
import LanguageSelectionItem from "./languageItem";
|
||||||
|
|
||||||
const LanguageSelectionComponent: React.FC<{ lang: LanguageTypes, activePage: string }> = ({ lang, activePage }) => {
|
const LanguageSelectionComponent: React.FC<{ lang: LanguageTypes, activePage: string, prefix: string }> = ({ lang, activePage, prefix }) => {
|
||||||
const translations = langGet(lang, languageSelectionTranslation);
|
const translations = langGet(lang, languageSelectionTranslation);
|
||||||
const getPageWithLocale = (locale: LanguageTypes): string => { return `/${locale}/${activePage}` }
|
const getPageWithLocale = (locale: LanguageTypes): string => { return `${prefix}/${locale}/${activePage}` }
|
||||||
|
|
||||||
const englishButtonProps = {
|
const englishButtonProps = {
|
||||||
activeLang: lang,
|
activeLang: lang,
|
||||||
|
|
@ -30,8 +30,7 @@ const LanguageSelectionComponent: React.FC<{ lang: LanguageTypes, activePage: st
|
||||||
<DropdownMenuTrigger asChild>
|
<DropdownMenuTrigger asChild>
|
||||||
<Button className="w-48 h-12 text-center text-md">{langGetKey(translations, "title")}</Button>
|
<Button className="w-48 h-12 text-center text-md">{langGetKey(translations, "title")}</Button>
|
||||||
</DropdownMenuTrigger>
|
</DropdownMenuTrigger>
|
||||||
<LanguageSelectionItem {...englishButtonProps} />
|
<LanguageSelectionItem {...englishButtonProps} /><LanguageSelectionItem {...turkishButtonProps} />
|
||||||
<LanguageSelectionItem {...turkishButtonProps} />
|
|
||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
'use server';
|
||||||
|
import { FC, Suspense } from "react";
|
||||||
|
import { AuthLayoutProps } from "@/validations/mutual/auth/props";
|
||||||
|
import LanguageSelectionComponent from "@/components/mutual/languageSelection/component";
|
||||||
|
|
||||||
|
const AuthLayout: FC<AuthLayoutProps> = async ({ lang, page, activePageUrl }) => {
|
||||||
|
return (
|
||||||
|
<div className="min-h-screen min-w-screen flex h-screen w-screen overflow-hidden">
|
||||||
|
<div className="w-1/4">
|
||||||
|
<div className="flex flex-col items-center justify-center h-screen bg-purple-600">
|
||||||
|
<div className="text-2xl font-bold">WAG Frontend</div>
|
||||||
|
<div className="text-sm text-gray-500 mt-4">Welcome to the WAG Frontend Application</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="w-3/4 text-black">
|
||||||
|
<LanguageSelectionComponent lang={lang} activePage={activePageUrl} prefix={"/auth"} />
|
||||||
|
<Suspense fallback={<div>Loading...</div>}>{page}</Suspense>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export { AuthLayout };
|
||||||
|
|
@ -19,7 +19,7 @@ const DashboardLayout: FC<DashboardLayoutProps> = async ({ params, searchParams,
|
||||||
const translations = langGet(lang, langDynamicPagesGet(activePageUrl, dynamicPagesIndex));
|
const translations = langGet(lang, langDynamicPagesGet(activePageUrl, dynamicPagesIndex));
|
||||||
const menuTranslationsFlatten = dynamicRetrieveMenuFlattenGet(menuItems);
|
const menuTranslationsFlatten = dynamicRetrieveMenuFlattenGet(menuItems);
|
||||||
|
|
||||||
const headerProps = { translations: translations.header, lang, activePageUrl }
|
const headerProps = { translations: translations.header, lang, activePageUrl, prefix: "/panel" }
|
||||||
const menuProps = { lang, activePageUrl, menuTranslationsFlatten, menuItems }
|
const menuProps = { lang, activePageUrl, menuTranslationsFlatten, menuItems }
|
||||||
const contentProps = { translations: translations.content, lang, activePageUrl, mode, isMulti: true }
|
const contentProps = { translations: translations.content, lang, activePageUrl, mode, isMulti: true }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,13 @@ import superUserTenantSomethingSecond from "./management/account/tenantSomething
|
||||||
import superUserBuildingPartsTenantSomething from "./building/parts/tenantSomething/page";
|
import superUserBuildingPartsTenantSomething from "./building/parts/tenantSomething/page";
|
||||||
|
|
||||||
const pageIndexMulti: Record<string, Record<string, React.FC<ContentProps>>> = {
|
const pageIndexMulti: Record<string, Record<string, React.FC<ContentProps>>> = {
|
||||||
"management/account/tenant/something": {
|
"panel/management/account/tenant/something": {
|
||||||
superUserTenantSomething: superUserTenantSomething,
|
superUserTenantSomething: superUserTenantSomething,
|
||||||
},
|
},
|
||||||
"management/account/tenant/somethingSecond": {
|
"panel/management/account/tenant/somethingSecond": {
|
||||||
superUserTenantSomething: superUserTenantSomethingSecond,
|
superUserTenantSomething: superUserTenantSomethingSecond,
|
||||||
},
|
},
|
||||||
"building/parts/tenant/something": {
|
"panel/building/parts/tenant/something": {
|
||||||
superUserTenantSomething: superUserBuildingPartsTenantSomething,
|
superUserTenantSomething: superUserBuildingPartsTenantSomething,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
import { LanguageTypes } from "../language/validations";
|
||||||
|
|
||||||
|
// <AuthLayout params={params} searchParams={searchParams} lang={lang} page={page} />
|
||||||
|
interface AuthLayoutProps {
|
||||||
|
page: React.ReactNode;
|
||||||
|
lang: LanguageTypes;
|
||||||
|
activePageUrl: string;
|
||||||
|
}
|
||||||
|
interface AuthPageProps {
|
||||||
|
query?: { [key: string]: string | string[] | undefined };
|
||||||
|
language: LanguageTypes;
|
||||||
|
}
|
||||||
|
export type { AuthLayoutProps, AuthPageProps };
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
import { LanguageTypes } from "@/validations/mutual/language/validations";
|
import { LanguageTypes } from "@/validations/mutual/language/validations";
|
||||||
|
import { ParamsType } from "@/validations/mutual/pages/props";
|
||||||
type ParamsType = { page: string[] | undefined };
|
|
||||||
|
|
||||||
interface MaindasboardPageProps {
|
interface MaindasboardPageProps {
|
||||||
params: Promise<ParamsType>;
|
params: Promise<ParamsType>;
|
||||||
|
|
@ -39,6 +38,7 @@ interface HeaderProps {
|
||||||
translations: Record<string, string>;
|
translations: Record<string, string>;
|
||||||
lang: LanguageTypes;
|
lang: LanguageTypes;
|
||||||
activePageUrl: string;
|
activePageUrl: string;
|
||||||
|
prefix: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type {
|
export type {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
type ParamsType = { page: string[] | undefined };
|
||||||
|
interface AuthServerProps {
|
||||||
|
params: Promise<{ page: string[] | undefined }>;
|
||||||
|
searchParams: Promise<{ [key: string]: string | string[] | undefined }>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type { ParamsType, AuthServerProps };
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
|
import { LanguageTypes } from "@/validations/mutual/language/validations";
|
||||||
|
|
||||||
export function loginHook(
|
export function loginHook(
|
||||||
startTransition: any,
|
startTransition: any,
|
||||||
data: any,
|
data: any,
|
||||||
setError: any,
|
setError: any,
|
||||||
setJsonText: any,
|
setJsonText: any,
|
||||||
Router: any
|
Router: any,
|
||||||
|
lang: LanguageTypes
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
const sendData = { ...data };
|
const sendData = { ...data };
|
||||||
|
|
@ -18,7 +21,7 @@ export function loginHook(
|
||||||
response.json().then((data) => {
|
response.json().then((data) => {
|
||||||
console.log("data", data); // setJsonText(JSON.stringify(data));
|
console.log("data", data); // setJsonText(JSON.stringify(data));
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
Router.push("/auth/en/select");
|
Router.push(`/auth/${lang}/select`);
|
||||||
}, 100);
|
}, 100);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1,38 +1,27 @@
|
||||||
"use client";
|
"use client";
|
||||||
import { useState, useTransition, useEffect } from "react";
|
import { useState, useTransition } from "react";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
import { useForm } from "react-hook-form";
|
import { useForm } from "react-hook-form";
|
||||||
import { zodResolver } from "@hookform/resolvers/zod";
|
import { zodResolver } from "@hookform/resolvers/zod";
|
||||||
import { LoginFormData } from "./types";
|
import { LoginFormData } from "./types";
|
||||||
import { loginSchemaEmail } from "./schemas";
|
import { loginSchemaEmail } from "./schemas";
|
||||||
import { loginTranslation } from "./language";
|
import { loginTranslation } from "./language";
|
||||||
// import { LanguageSelectionComponent } from "@/components/common/HeaderSelections/LanguageSelectionComponent";
|
|
||||||
import { loginHook } from "./hook";
|
import { loginHook } from "./hook";
|
||||||
import LanguageSelectionComponent from "@/components/mutual/languageSelection/component";
|
import { AuthPageProps } from "@/validations/mutual/auth/props";
|
||||||
|
|
||||||
function Login({ language }: { language: "tr" | "en" }) {
|
|
||||||
|
|
||||||
|
function Login({ language }: AuthPageProps) {
|
||||||
const Router = useRouter();
|
const Router = useRouter();
|
||||||
|
const translation = loginTranslation[language];
|
||||||
|
|
||||||
const [isPending, startTransition] = useTransition();
|
const [isPending, startTransition] = useTransition();
|
||||||
const [error, setError] = useState<string | null>(null);
|
const [error, setError] = useState<string | null>(null);
|
||||||
const [jsonText, setJsonText] = useState<string | null>(null);
|
const [jsonText, setJsonText] = useState<string | null>(null);
|
||||||
const [translation, setTranslation] = useState(loginTranslation[language]);
|
|
||||||
const [lang, setLang] = useState(language);
|
|
||||||
|
|
||||||
useEffect(() => { setTranslation(loginTranslation[lang]) }, [lang]);
|
|
||||||
|
|
||||||
const { register, formState: { errors }, handleSubmit, } = useForm<LoginFormData>({ resolver: zodResolver(loginSchemaEmail) });
|
const { register, formState: { errors }, handleSubmit, } = useForm<LoginFormData>({ resolver: zodResolver(loginSchemaEmail) });
|
||||||
const onSubmit = async (data: LoginFormData) => { loginHook(startTransition, data, setError, setJsonText, Router) };
|
const onSubmit = async (data: LoginFormData) => { loginHook(startTransition, data, setError, setJsonText, Router) };
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{/* <div className="absolute top-4 right-4">
|
|
||||||
<LanguageSelectionComponent
|
|
||||||
lang={lang}
|
|
||||||
setLang={setLang}
|
|
||||||
className="border px-3 py-2 rounded-lg"
|
|
||||||
/>
|
|
||||||
</div> */}
|
|
||||||
<div className="flex h-full min-h-[inherit] flex-col items-center justify-center gap-4">
|
<div className="flex h-full min-h-[inherit] flex-col items-center justify-center gap-4">
|
||||||
<div className="w-full max-w-md rounded-lg bg-white p-8 shadow-md">
|
<div className="w-full max-w-md rounded-lg bg-white p-8 shadow-md">
|
||||||
<h2 className="mb-6 text-center text-2xl font-bold text-gray-900">{translation.login}</h2>
|
<h2 className="mb-6 text-center text-2xl font-bold text-gray-900">{translation.login}</h2>
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
'use server';
|
||||||
|
import Login from "./page";
|
||||||
|
import { FC } from "react";
|
||||||
|
import { AuthPageProps } from "@/validations/mutual/auth/props";
|
||||||
|
|
||||||
|
const LoginPage: FC<AuthPageProps> = async ({ query, language }) => { return <Login language={language} query={query} /> };
|
||||||
|
|
||||||
|
export default LoginPage;
|
||||||
|
|
@ -7,7 +7,8 @@ import { selectEmployeeHook } from "./hook";
|
||||||
|
|
||||||
function LoginEmployee({
|
function LoginEmployee({
|
||||||
selectionList,
|
selectionList,
|
||||||
translation
|
translation,
|
||||||
|
lang
|
||||||
}: LoginEmployeeProps) {
|
}: LoginEmployeeProps) {
|
||||||
const isArrayLengthOne = Array.isArray(selectionList) && selectionList.length === 1;
|
const isArrayLengthOne = Array.isArray(selectionList) && selectionList.length === 1;
|
||||||
const isArrayLengthZero = Array.isArray(selectionList) && selectionList.length === 0;
|
const isArrayLengthZero = Array.isArray(selectionList) && selectionList.length === 0;
|
||||||
|
|
@ -19,7 +20,7 @@ function LoginEmployee({
|
||||||
const [jsonText, setJsonText] = useState<string | null>(null);
|
const [jsonText, setJsonText] = useState<string | null>(null);
|
||||||
|
|
||||||
const onSubmitEmployee = async (uu_id: string) => {
|
const onSubmitEmployee = async (uu_id: string) => {
|
||||||
selectEmployeeHook(startTransition, { company_uu_id: uu_id }, setError, setJsonText, Router)
|
selectEmployeeHook(startTransition, { company_uu_id: uu_id }, setError, setJsonText, Router, lang)
|
||||||
};
|
};
|
||||||
|
|
||||||
// Render a company card with consistent styling
|
// Render a company card with consistent styling
|
||||||
|
|
@ -7,6 +7,7 @@ import { selectOccupantHook } from "./hook";
|
||||||
function LoginOccupant({
|
function LoginOccupant({
|
||||||
selectionList,
|
selectionList,
|
||||||
translation,
|
translation,
|
||||||
|
lang
|
||||||
}: LoginOccupantProps) {
|
}: LoginOccupantProps) {
|
||||||
|
|
||||||
const Router = useRouter();
|
const Router = useRouter();
|
||||||
|
|
@ -15,7 +16,7 @@ function LoginOccupant({
|
||||||
const [jsonText, setJsonText] = useState<string | null>(null);
|
const [jsonText, setJsonText] = useState<string | null>(null);
|
||||||
|
|
||||||
const onSubmitOccupant = async (data: any) => {
|
const onSubmitOccupant = async (data: any) => {
|
||||||
selectOccupantHook(startTransition, data, setError, setJsonText, Router)
|
selectOccupantHook(startTransition, data, setError, setJsonText, Router, lang)
|
||||||
};
|
};
|
||||||
const isArrayLengthZero = Array.isArray(selectionList) && selectionList.length === 0;
|
const isArrayLengthZero = Array.isArray(selectionList) && selectionList.length === 0;
|
||||||
|
|
||||||
|
|
@ -1,12 +1,16 @@
|
||||||
|
import { LanguageTypes } from "@/validations/mutual/language/validations";
|
||||||
|
|
||||||
function selectEmployeeHook(
|
function selectEmployeeHook(
|
||||||
startTransition: any,
|
startTransition: any,
|
||||||
data: any,
|
data: any,
|
||||||
setError: any,
|
setError: any,
|
||||||
setJsonText: any,
|
setJsonText: any,
|
||||||
Router: any
|
Router: any,
|
||||||
|
lang: LanguageTypes
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
const sendData = { ...data };
|
const sendData = { ...data };
|
||||||
|
const urlToDirect = `/auth/${lang}/panel/building/parts/tenant/something`;
|
||||||
startTransition(() => {
|
startTransition(() => {
|
||||||
fetch("/api/selection/employee", {
|
fetch("/api/selection/employee", {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
|
|
@ -18,7 +22,7 @@ function selectEmployeeHook(
|
||||||
response.json().then((data) => {
|
response.json().then((data) => {
|
||||||
console.log("data", data); // setJsonText(JSON.stringify(data));
|
console.log("data", data); // setJsonText(JSON.stringify(data));
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
Router.push("/en/building/parts/tenant/something");
|
Router.push(urlToDirect);
|
||||||
}, 100);
|
}, 100);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -39,10 +43,12 @@ function selectOccupantHook(
|
||||||
data: any,
|
data: any,
|
||||||
setError: any,
|
setError: any,
|
||||||
setJsonText: any,
|
setJsonText: any,
|
||||||
Router: any
|
Router: any,
|
||||||
|
lang: LanguageTypes
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
const sendData = { ...data };
|
const sendData = { ...data };
|
||||||
|
const urlToDirect = `/auth/${lang}/panel/building/parts/tenant/something`;
|
||||||
startTransition(() => {
|
startTransition(() => {
|
||||||
fetch("/api/selection/occupant", {
|
fetch("/api/selection/occupant", {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
|
|
@ -54,7 +60,7 @@ function selectOccupantHook(
|
||||||
response.json().then((data) => {
|
response.json().then((data) => {
|
||||||
console.log("data", data); // setJsonText(JSON.stringify(data));
|
console.log("data", data); // setJsonText(JSON.stringify(data));
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
Router.push("/en/building/parts/tenant/something");
|
Router.push(urlToDirect);
|
||||||
}, 100);
|
}, 100);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -5,15 +5,16 @@ import LoginEmployee from "./LoginEmployee";
|
||||||
|
|
||||||
import { Company, SelectListProps, BuildingMap } from "./types";
|
import { Company, SelectListProps, BuildingMap } from "./types";
|
||||||
import { selectEmployeeTranslation, selectOccupantTranslation } from "./language";
|
import { selectEmployeeTranslation, selectOccupantTranslation } from "./language";
|
||||||
// import { LanguageSelectionComponent } from "@/components/common/HeaderSelections/LanguageSelectionComponent";
|
|
||||||
|
|
||||||
const Select: React.FC<SelectListProps> = ({ selectionList, isEmployee, isOccupant, language }) => {
|
const Select: React.FC<SelectListProps> = ({ selectionList, isEmployee, isOccupant, language, query }) => {
|
||||||
|
const isEmployeee = query?.isEmployee == "true";
|
||||||
|
const isOccupante = query?.isOccupant == "true";
|
||||||
|
const userType = isEmployeee || isOccupante ? isEmployeee ? "employee" : "occupant" : "employee";
|
||||||
|
|
||||||
const isEmployeeTrue = isEmployee && Array.isArray(selectionList)
|
const isEmployeeTrue = userType == "employee" && Array.isArray(selectionList)
|
||||||
const isOccupantTrue = isOccupant && !Array.isArray(selectionList)
|
const isOccupantTrue = userType == "occupant" && !Array.isArray(selectionList)
|
||||||
const initTranslation = isEmployee ? selectEmployeeTranslation[language as "en" | "tr"] : selectOccupantTranslation[language as "en" | "tr"]
|
const initTranslation = userType == "employee" ? selectEmployeeTranslation[language] : selectOccupantTranslation[language]
|
||||||
|
|
||||||
const [lang, setLang] = useState(language);
|
|
||||||
const [translation, setTranslation] = useState(initTranslation);
|
const [translation, setTranslation] = useState(initTranslation);
|
||||||
const [listEmployeeSelection, setListEmployeeSelection] = useState<Company[]>(selectionList as Company[]);
|
const [listEmployeeSelection, setListEmployeeSelection] = useState<Company[]>(selectionList as Company[]);
|
||||||
const [listOccupantSelection, setListOccupantSelection] = useState<BuildingMap>(selectionList as BuildingMap);
|
const [listOccupantSelection, setListOccupantSelection] = useState<BuildingMap>(selectionList as BuildingMap);
|
||||||
|
|
@ -24,23 +25,15 @@ const Select: React.FC<SelectListProps> = ({ selectionList, isEmployee, isOccupa
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setTranslation(isEmployee ? selectEmployeeTranslation[lang as "en" | "tr"] : selectOccupantTranslation[lang as "en" | "tr"]);
|
setTranslation(isEmployee ? selectEmployeeTranslation[language] : selectOccupantTranslation[language]);
|
||||||
}, [lang]);
|
}, [language]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{/* <div className="absolute top-4 right-4">
|
|
||||||
<LanguageSelectionComponent
|
|
||||||
lang={lang as "en" | "tr"}
|
|
||||||
setLang={setLang}
|
|
||||||
className="border px-3 py-2 rounded-lg"
|
|
||||||
/>
|
|
||||||
</div> */}
|
|
||||||
|
|
||||||
<div className="flex h-full min-h-[inherit] flex-col items-center justify-center gap-4">
|
<div className="flex h-full min-h-[inherit] flex-col items-center justify-center gap-4">
|
||||||
<div className="w-full max-w-md rounded-lg bg-white p-8 shadow-md">
|
<div className="w-full max-w-md rounded-lg bg-white p-8 shadow-md">
|
||||||
{isEmployeeTrue && <LoginEmployee translation={translation} selectionList={listEmployeeSelection} />}
|
{isEmployeeTrue && <LoginEmployee translation={translation} selectionList={listEmployeeSelection} lang={language} />}
|
||||||
{isOccupantTrue && <LoginOccupant translation={translation} selectionList={listOccupantSelection} />}
|
{isOccupantTrue && <LoginOccupant translation={translation} selectionList={listOccupantSelection} lang={language} />}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
"use server";
|
"use server";
|
||||||
import React from "react";
|
import React, { FC } from "react";
|
||||||
import Select from "@/webPages/auth/Select/page";
|
import Select from "./page";
|
||||||
|
|
||||||
import { redirect } from "next/navigation";
|
import { redirect } from "next/navigation";
|
||||||
import { checkAccessTokenIsValid, retrieveUserType } from "@/apicalls/mutual/cookies/token";
|
import { checkAccessTokenIsValid, retrieveUserType } from "@/apicalls/mutual/cookies/token";
|
||||||
|
import { AuthPageProps } from "@/validations/mutual/auth/props";
|
||||||
|
|
||||||
const SelectPage = async () => {
|
const SelectPage: FC<AuthPageProps> = async ({ query, language }) => {
|
||||||
const token_is_valid = await checkAccessTokenIsValid();
|
const token_is_valid = await checkAccessTokenIsValid();
|
||||||
const selection = await retrieveUserType();
|
const selection = await retrieveUserType();
|
||||||
const isEmployee = selection?.userType == "employee";
|
const isEmployee = selection?.userType == "employee";
|
||||||
|
|
@ -13,7 +14,7 @@ const SelectPage = async () => {
|
||||||
const selectionList = selection?.selectionList;
|
const selectionList = selection?.selectionList;
|
||||||
|
|
||||||
if (!selectionList || !token_is_valid) { redirect("/auth/en/login") }
|
if (!selectionList || !token_is_valid) { redirect("/auth/en/login") }
|
||||||
return <Select selectionList={selectionList} isEmployee={isEmployee} isOccupant={isOccupant} language={"en"} />
|
return <Select selectionList={selectionList} isEmployee={isEmployee} isOccupant={isOccupant} language={language} query={query} />
|
||||||
}
|
}
|
||||||
|
|
||||||
export default SelectPage;
|
export default SelectPage;
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { LanguageTypes } from "@/validations/mutual/language/validations";
|
||||||
|
|
||||||
interface Company {
|
interface Company {
|
||||||
uu_id: string;
|
uu_id: string;
|
||||||
public_name: string;
|
public_name: string;
|
||||||
|
|
@ -31,17 +33,20 @@ interface SelectListProps {
|
||||||
selectionList: Company[] | BuildingMap;
|
selectionList: Company[] | BuildingMap;
|
||||||
isEmployee: boolean;
|
isEmployee: boolean;
|
||||||
isOccupant: boolean;
|
isOccupant: boolean;
|
||||||
language?: "en" | "tr";
|
language: LanguageTypes;
|
||||||
|
query?: { [key: string]: string | string[] | undefined };
|
||||||
}
|
}
|
||||||
|
|
||||||
interface LoginOccupantProps {
|
interface LoginOccupantProps {
|
||||||
selectionList: BuildingMap;
|
selectionList: BuildingMap;
|
||||||
translation: any;
|
translation: any;
|
||||||
|
lang: LanguageTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface LoginEmployeeProps {
|
interface LoginEmployeeProps {
|
||||||
selectionList: Company[];
|
selectionList: Company[];
|
||||||
translation: any;
|
translation: any;
|
||||||
|
lang: LanguageTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type {
|
export type {
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
import LoginPage from "./auth/login/serverPage";
|
||||||
|
import SelectPage from "./auth/select/serverPage";
|
||||||
|
|
||||||
|
export default function getPage(pageName: string, props: any) {
|
||||||
|
switch (pageName) {
|
||||||
|
case "/login":
|
||||||
|
return <LoginPage {...props} />;
|
||||||
|
case "/select":
|
||||||
|
return <SelectPage {...props} />;
|
||||||
|
default:
|
||||||
|
return <LoginPage {...props} />;
|
||||||
|
}
|
||||||
|
return <></>
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
Reference in New Issue