SubDomain için ayrı Layout
This commit is contained in:
parent
64ccc150df
commit
daadb0b50d
3 changed files with 30 additions and 18 deletions
|
|
@ -14,6 +14,7 @@ import useDirection from '@/utils/hooks/useDirection'
|
||||||
import useLocale from '@/utils/hooks/useLocale'
|
import useLocale from '@/utils/hooks/useLocale'
|
||||||
import { useDynamicRoutes } from '@/routes/dynamicRoutesContext'
|
import { useDynamicRoutes } from '@/routes/dynamicRoutesContext'
|
||||||
import { useLocation } from 'react-router-dom'
|
import { useLocation } from 'react-router-dom'
|
||||||
|
import { hasSubdomain } from '@/utils/subdomain'
|
||||||
|
|
||||||
export type LayoutType =
|
export type LayoutType =
|
||||||
| typeof LAYOUT_TYPE_CLASSIC
|
| typeof LAYOUT_TYPE_CLASSIC
|
||||||
|
|
@ -61,6 +62,10 @@ const Layout = () => {
|
||||||
}, [routes, currentPath])
|
}, [routes, currentPath])
|
||||||
|
|
||||||
const AppLayout = useMemo(() => {
|
const AppLayout = useMemo(() => {
|
||||||
|
if (hasSubdomain()) {
|
||||||
|
return layouts[layoutType]
|
||||||
|
}
|
||||||
|
|
||||||
if (authenticated && route?.routeType === 'protected') {
|
if (authenticated && route?.routeType === 'protected') {
|
||||||
return layouts[layoutType]
|
return layouts[layoutType]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
24
ui/src/utils/subdomain.ts
Normal file
24
ui/src/utils/subdomain.ts
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
const defaultSubDomain = 'KURS'
|
||||||
|
|
||||||
|
export const getSubdomain = (): string | null => {
|
||||||
|
if (typeof window === 'undefined') return null
|
||||||
|
|
||||||
|
const hostname = window.location.hostname
|
||||||
|
const parts = hostname.split('.')
|
||||||
|
|
||||||
|
// localhost veya normal domain ise subdomain yok
|
||||||
|
if (hostname === 'localhost' || parts.length < 3) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default subdomain ise null döndür
|
||||||
|
if (parts[0].toUpperCase() === defaultSubDomain) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
return parts[0].toUpperCase()
|
||||||
|
}
|
||||||
|
|
||||||
|
export const hasSubdomain = (): boolean => {
|
||||||
|
return getSubdomain() !== null
|
||||||
|
}
|
||||||
|
|
@ -20,6 +20,7 @@ import { motion } from 'framer-motion'
|
||||||
import { useEffect, useRef, useState } from 'react'
|
import { useEffect, useRef, useState } from 'react'
|
||||||
import { useNavigate } from 'react-router-dom'
|
import { useNavigate } from 'react-router-dom'
|
||||||
import * as Yup from 'yup'
|
import * as Yup from 'yup'
|
||||||
|
import { getSubdomain } from '@/utils/subdomain'
|
||||||
|
|
||||||
type SignInFormSchema = {
|
type SignInFormSchema = {
|
||||||
userName: string
|
userName: string
|
||||||
|
|
@ -67,24 +68,6 @@ const Login = () => {
|
||||||
|
|
||||||
const defaultSubDomain = 'KURS'
|
const defaultSubDomain = 'KURS'
|
||||||
|
|
||||||
const getSubdomain = () => {
|
|
||||||
if (typeof window === 'undefined') return null
|
|
||||||
|
|
||||||
const hostname = window.location.hostname
|
|
||||||
|
|
||||||
const parts = hostname.split('.')
|
|
||||||
|
|
||||||
if (hostname === 'localhost' || parts.length < 3) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parts[0].toUpperCase() === defaultSubDomain) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
return parts[0].toUpperCase()
|
|
||||||
}
|
|
||||||
|
|
||||||
const onSignIn = async (
|
const onSignIn = async (
|
||||||
values: SignInFormSchema,
|
values: SignInFormSchema,
|
||||||
{ setSubmitting, isSubmitting, setFieldValue, setFieldTouched }: any,
|
{ setSubmitting, isSubmitting, setFieldValue, setFieldTouched }: any,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue