Docker hostname 변경
This commit is contained in:
		
							
								
								
									
										8
									
								
								.env
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								.env
									
									
									
									
									
								
							@@ -1,5 +1,7 @@
 | 
				
			|||||||
//DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@jongyeob.com/learnsteam_quiz"
 | 
					//DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@jongyeob.com/learnsteam_quiz"
 | 
				
			||||||
NEXTAUTH_URL=https://learnsteam-quiz.jongyeob.com
 | 
					DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@db/learnsteam_quiz"
 | 
				
			||||||
NEXT_PUBLIC_HOST=https://learnsteam-quiz.jongyeob.com
 | 
					//DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@127.0.0.1/learnsteam_quiz"
 | 
				
			||||||
NEXT_PUBLIC_API_ENDPOINT=https://learnsteam-quiz-api.jongyeob.com
 | 
					NEXTAUTH_URL=http://localhost:3000
 | 
				
			||||||
 | 
					NEXT_PUBLIC_HOST=http://localhost:3000
 | 
				
			||||||
 | 
					NEXT_PUBLIC_API_ENDPOINT=http://localhost:3000
 | 
				
			||||||
NEXTAUTH_SECRET=dd87d8220ed9535d3152910f62ca40fb8ae292ac527e9528425118406aebbce0
 | 
					NEXTAUTH_SECRET=dd87d8220ed9535d3152910f62ca40fb8ae292ac527e9528425118406aebbce0
 | 
				
			||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@db/learnsteam_quiz"
 | 
					DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@learnsteam-db/learnsteam_quiz"
 | 
				
			||||||
//DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@127.0.0.1/learnsteam_quiz"
 | 
					//DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@127.0.0.1/learnsteam_quiz"
 | 
				
			||||||
NEXTAUTH_URL=https://learnsteam-quiz.jongyeob.com
 | 
					NEXTAUTH_URL=https://learnsteam-quiz.jongyeob.com
 | 
				
			||||||
NEXT_PUBLIC_HOST=https://learnsteam-quiz.jongyeob.com
 | 
					NEXT_PUBLIC_HOST=https://learnsteam-quiz.jongyeob.com
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
//DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@jongyeob.com/learnsteam_quiz"
 | 
					//DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@jongyeob.com/learnsteam_quiz"
 | 
				
			||||||
DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@db/learnsteam_quiz"
 | 
					DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@learnsteam-db/learnsteam_quiz"
 | 
				
			||||||
//DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@127.0.0.1/learnsteam_quiz"
 | 
					//DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@127.0.0.1/learnsteam_quiz"
 | 
				
			||||||
NEXTAUTH_URL=http://localhost:3100
 | 
					NEXTAUTH_URL=http://localhost:3100
 | 
				
			||||||
NEXT_PUBLIC_HOST=http://localhost:3100
 | 
					NEXT_PUBLIC_HOST=http://localhost:3100
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@db/learnsteam_quiz"
 | 
					DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@learnsteam-db/learnsteam_quiz"
 | 
				
			||||||
//DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@jongyeob.com/learnsteam_quiz"
 | 
					//DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@jongyeob.com/learnsteam_quiz"
 | 
				
			||||||
NEXTAUTH_URL=https://learnsteam-quiz.jongyeob.com
 | 
					NEXTAUTH_URL=https://learnsteam-quiz.jongyeob.com
 | 
				
			||||||
NEXT_PUBLIC_HOST=https://learnsteam-quiz.jongyeob.com
 | 
					NEXT_PUBLIC_HOST=https://learnsteam-quiz.jongyeob.com
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
version: "3"
 | 
					version: "3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
services:
 | 
					services:
 | 
				
			||||||
  db:
 | 
					  learnsteam-db:
 | 
				
			||||||
    image: mysql:latest
 | 
					    image: mysql:latest
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      MYSQL_ROOT_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6
 | 
					      MYSQL_ROOT_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6
 | 
				
			||||||
@@ -10,7 +10,7 @@ services:
 | 
				
			|||||||
      - "33062:3306"
 | 
					      - "33062:3306"
 | 
				
			||||||
    volumes:
 | 
					    volumes:
 | 
				
			||||||
      - db-learnsteam-quiz:/var/lib/mysql
 | 
					      - db-learnsteam-quiz:/var/lib/mysql
 | 
				
			||||||
  app:
 | 
					  learnsteam-quiz:
 | 
				
			||||||
    build:
 | 
					    build:
 | 
				
			||||||
      context: ../../
 | 
					      context: ../../
 | 
				
			||||||
      dockerfile: docker/dev/Dockerfile
 | 
					      dockerfile: docker/dev/Dockerfile
 | 
				
			||||||
@@ -18,13 +18,13 @@ services:
 | 
				
			|||||||
    ports:
 | 
					    ports:
 | 
				
			||||||
      - "3100:3100"
 | 
					      - "3100:3100"
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      DB_HOST: db
 | 
					      DB_HOST: learnsteam-db
 | 
				
			||||||
      DB_PORT: 3306
 | 
					      DB_PORT: 3306
 | 
				
			||||||
      DB_USER: root
 | 
					      DB_USER: root
 | 
				
			||||||
      DB_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6
 | 
					      DB_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6
 | 
				
			||||||
      DB_NAME: learnsteam_quiz
 | 
					      DB_NAME: learnsteam_quiz
 | 
				
			||||||
    depends_on:
 | 
					    depends_on:
 | 
				
			||||||
      - db
 | 
					      - learnsteam-db
 | 
				
			||||||
    restart: always
 | 
					    restart: always
 | 
				
			||||||
volumes:
 | 
					volumes:
 | 
				
			||||||
  db-learnsteam-quiz:
 | 
					  db-learnsteam-quiz:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
version: "3"
 | 
					version: "3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
services:
 | 
					services:
 | 
				
			||||||
  db:
 | 
					  learnsteam-db:
 | 
				
			||||||
    image: mysql:latest
 | 
					    image: mysql:latest
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      MYSQL_ROOT_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6
 | 
					      MYSQL_ROOT_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6
 | 
				
			||||||
@@ -10,7 +10,7 @@ services:
 | 
				
			|||||||
      - "33062:3306"
 | 
					      - "33062:3306"
 | 
				
			||||||
    volumes:
 | 
					    volumes:
 | 
				
			||||||
      - db-learnsteam-quiz:/var/lib/mysql
 | 
					      - db-learnsteam-quiz:/var/lib/mysql
 | 
				
			||||||
  app:
 | 
					  learnsteam-quiz:
 | 
				
			||||||
    build:
 | 
					    build:
 | 
				
			||||||
      context: ../../
 | 
					      context: ../../
 | 
				
			||||||
      dockerfile: docker/local/Dockerfile
 | 
					      dockerfile: docker/local/Dockerfile
 | 
				
			||||||
@@ -18,13 +18,13 @@ services:
 | 
				
			|||||||
    ports:
 | 
					    ports:
 | 
				
			||||||
      - "3100:3100"
 | 
					      - "3100:3100"
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      DB_HOST: db
 | 
					      DB_HOST: learnsteam-db
 | 
				
			||||||
      DB_PORT: 3306
 | 
					      DB_PORT: 3306
 | 
				
			||||||
      DB_USER: root
 | 
					      DB_USER: root
 | 
				
			||||||
      DB_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6
 | 
					      DB_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6
 | 
				
			||||||
      DB_NAME: learnsteam_quiz
 | 
					      DB_NAME: learnsteam_quiz
 | 
				
			||||||
    depends_on:
 | 
					    depends_on:
 | 
				
			||||||
      - db
 | 
					      - learnsteam-db
 | 
				
			||||||
    restart: always
 | 
					    restart: always
 | 
				
			||||||
volumes:
 | 
					volumes:
 | 
				
			||||||
  db-learnsteam-quiz:
 | 
					  db-learnsteam-quiz:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
version: "3"
 | 
					version: "3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
services:
 | 
					services:
 | 
				
			||||||
  db:
 | 
					  learnsteam-db:
 | 
				
			||||||
    image: mysql:latest
 | 
					    image: mysql:latest
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      MYSQL_ROOT_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6
 | 
					      MYSQL_ROOT_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6
 | 
				
			||||||
@@ -10,7 +10,7 @@ services:
 | 
				
			|||||||
      - "33062:3306"
 | 
					      - "33062:3306"
 | 
				
			||||||
    volumes:
 | 
					    volumes:
 | 
				
			||||||
      - db-learnsteam-quiz:/var/lib/mysql
 | 
					      - db-learnsteam-quiz:/var/lib/mysql
 | 
				
			||||||
  app:
 | 
					  learnsteam-quiz:
 | 
				
			||||||
    build:
 | 
					    build:
 | 
				
			||||||
      context: ../../
 | 
					      context: ../../
 | 
				
			||||||
      dockerfile: docker/prod/Dockerfile
 | 
					      dockerfile: docker/prod/Dockerfile
 | 
				
			||||||
@@ -18,13 +18,13 @@ services:
 | 
				
			|||||||
    ports:
 | 
					    ports:
 | 
				
			||||||
      - "3100:3100"
 | 
					      - "3100:3100"
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      DB_HOST: db
 | 
					      DB_HOST: learnsteam-db
 | 
				
			||||||
      DB_PORT: 3306
 | 
					      DB_PORT: 3306
 | 
				
			||||||
      DB_USER: root
 | 
					      DB_USER: root
 | 
				
			||||||
      DB_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6
 | 
					      DB_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6
 | 
				
			||||||
      DB_NAME: learnsteam_quiz
 | 
					      DB_NAME: learnsteam_quiz
 | 
				
			||||||
    depends_on:
 | 
					    depends_on:
 | 
				
			||||||
      - db
 | 
					      - learnsteam-db
 | 
				
			||||||
    restart: always
 | 
					    restart: always
 | 
				
			||||||
volumes:
 | 
					volumes:
 | 
				
			||||||
  db-learnsteam-quiz:
 | 
					  db-learnsteam-quiz:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,6 +21,7 @@
 | 
				
			|||||||
    "lucide-react": "^0.291.0",
 | 
					    "lucide-react": "^0.291.0",
 | 
				
			||||||
    "moment": "^2.29.4",
 | 
					    "moment": "^2.29.4",
 | 
				
			||||||
    "next": "14.0.1",
 | 
					    "next": "14.0.1",
 | 
				
			||||||
 | 
					    "next-auth": "^4.24.5",
 | 
				
			||||||
    "numeral": "^2.0.6",
 | 
					    "numeral": "^2.0.6",
 | 
				
			||||||
    "qs": "^6.11.2",
 | 
					    "qs": "^6.11.2",
 | 
				
			||||||
    "react": "^18",
 | 
					    "react": "^18",
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										163
									
								
								src/components/login/LoginForm.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								src/components/login/LoginForm.tsx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,163 @@
 | 
				
			|||||||
 | 
					import DefaultModal from "@/components/shared/ui/default-modal"
 | 
				
			||||||
 | 
					import { Alert, Button, Card, Checkbox, Divider, Flex, Form, Input } from "antd"
 | 
				
			||||||
 | 
					import { useForm } from "antd/lib/form/Form"
 | 
				
			||||||
 | 
					import { signIn } from "next-auth/react"
 | 
				
			||||||
 | 
					import { useRouter } from "next/router"
 | 
				
			||||||
 | 
					import React, { useCallback, useState } from "react"
 | 
				
			||||||
 | 
					import { UserOutlined, LockOutlined, EyeInvisibleOutlined, EyeTwoTone } from "@ant-design/icons"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					interface ILoginFormValue {
 | 
				
			||||||
 | 
					  username: string
 | 
				
			||||||
 | 
					  password: string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const LoginForm = () => {
 | 
				
			||||||
 | 
					  const router = useRouter()
 | 
				
			||||||
 | 
					  const [form] = useForm<ILoginFormValue>()
 | 
				
			||||||
 | 
					  const [isLoading, setIsLoading] = useState(false)
 | 
				
			||||||
 | 
					  const [showPasswordModal, setShowPasswordModal] = useState(false)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const handleFinish = useCallback(async (value: ILoginFormValue) => {
 | 
				
			||||||
 | 
					    setIsLoading(true)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      console.log(value)
 | 
				
			||||||
 | 
					      await signIn("login-credentials", { username: value.username, password: value.password })
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					      setIsLoading(false)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }, [])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 카카오톡 로그인 핸들러
 | 
				
			||||||
 | 
					  const handleKakaoLogin = () => {
 | 
				
			||||||
 | 
					    // 카카오톡 로그인 처리 로직 구현
 | 
				
			||||||
 | 
					    console.log("카카오톡 로그인 진행")
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const onFinish = () => {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const onFinishFail = () => {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return (
 | 
				
			||||||
 | 
					    <div style={{ display: "flex", justifyContent: "center", alignItems: "center", height: "100vh" }}>
 | 
				
			||||||
 | 
					      <Card style={{ width: "320px" }}>
 | 
				
			||||||
 | 
					        <Form name="normal_login" initialValues={{ remember: true }} onFinish={onFinish} className="login-form">
 | 
				
			||||||
 | 
					          <Form.Item>
 | 
				
			||||||
 | 
					            <Button
 | 
				
			||||||
 | 
					              type="link"
 | 
				
			||||||
 | 
					              htmlType="button"
 | 
				
			||||||
 | 
					              className="login-form-button"
 | 
				
			||||||
 | 
					              style={{
 | 
				
			||||||
 | 
					                height: "40px",
 | 
				
			||||||
 | 
					                width: "100%",
 | 
				
			||||||
 | 
					                backgroundColor: "#FEE500",
 | 
				
			||||||
 | 
					                color: "#000000",
 | 
				
			||||||
 | 
					                marginBottom: "20px",
 | 
				
			||||||
 | 
					              }}
 | 
				
			||||||
 | 
					              onClick={handleKakaoLogin}
 | 
				
			||||||
 | 
					              block
 | 
				
			||||||
 | 
					            >
 | 
				
			||||||
 | 
					              카카오 로그인
 | 
				
			||||||
 | 
					            </Button>
 | 
				
			||||||
 | 
					          </Form.Item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <Divider>OR LOGIN WITH EMAIL</Divider>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <Form.Item name="username" rules={[{ required: true, message: "Please input your username!" }]}>
 | 
				
			||||||
 | 
					            <Input prefix={<UserOutlined className="site-form-item-icon" />} placeholder="아이디" />
 | 
				
			||||||
 | 
					          </Form.Item>
 | 
				
			||||||
 | 
					          <Form.Item name="password" rules={[{ required: true, message: "Please input your Password!" }]}>
 | 
				
			||||||
 | 
					            <Input.Password
 | 
				
			||||||
 | 
					              prefix={<LockOutlined className="site-form-item-icon" />}
 | 
				
			||||||
 | 
					              placeholder="비밀번호"
 | 
				
			||||||
 | 
					              iconRender={(visible) => (visible ? <EyeTwoTone /> : <EyeInvisibleOutlined />)}
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
 | 
					          </Form.Item>
 | 
				
			||||||
 | 
					          <Form.Item>
 | 
				
			||||||
 | 
					            <Form.Item name="remember" valuePropName="checked" noStyle>
 | 
				
			||||||
 | 
					              <Checkbox>로그인 기억</Checkbox>
 | 
				
			||||||
 | 
					            </Form.Item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <a className="login-form-forgot" href="" style={{ float: "right" }}>
 | 
				
			||||||
 | 
					              비밀번호 찾기
 | 
				
			||||||
 | 
					            </a>
 | 
				
			||||||
 | 
					          </Form.Item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <Form.Item>
 | 
				
			||||||
 | 
					            <Button
 | 
				
			||||||
 | 
					              type="primary"
 | 
				
			||||||
 | 
					              htmlType="submit"
 | 
				
			||||||
 | 
					              className="login-form-button"
 | 
				
			||||||
 | 
					              style={{ height: "40px", width: "100%" }}
 | 
				
			||||||
 | 
					              block
 | 
				
			||||||
 | 
					            >
 | 
				
			||||||
 | 
					              로그인
 | 
				
			||||||
 | 
					            </Button>
 | 
				
			||||||
 | 
					          </Form.Item>
 | 
				
			||||||
 | 
					          <Form.Item>
 | 
				
			||||||
 | 
					            <Button type="link" htmlType="button">
 | 
				
			||||||
 | 
					              계정이 없으신가요? 회원가입!
 | 
				
			||||||
 | 
					            </Button>
 | 
				
			||||||
 | 
					          </Form.Item>
 | 
				
			||||||
 | 
					        </Form>
 | 
				
			||||||
 | 
					      </Card>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// <Flex justify={"center"} align={"center"} vertical>
 | 
				
			||||||
 | 
					//   <h1>코딩스쿨 로그인</h1>
 | 
				
			||||||
 | 
					//   <Card>
 | 
				
			||||||
 | 
					//     {router?.query.error && router?.query.error !== "CredentialsSignin" ? (
 | 
				
			||||||
 | 
					//       <div className="mb-3">
 | 
				
			||||||
 | 
					//         <Alert message={`로그인 중 오류가 발생했습니다. ${router?.query.error}`} type="warning" />
 | 
				
			||||||
 | 
					//       </div>
 | 
				
			||||||
 | 
					//     ) : null}
 | 
				
			||||||
 | 
					//     <Flex>
 | 
				
			||||||
 | 
					//       <a className="flex items-center justify-center h-20 grow btn" onClick={() => signIn("github")}>
 | 
				
			||||||
 | 
					//         <svg width="28" height="28" viewBox="0 0 98 96" xmlns="http://www.w3.org/2000/svg">
 | 
				
			||||||
 | 
					//           <path
 | 
				
			||||||
 | 
					//             fillRule="evenodd"
 | 
				
			||||||
 | 
					//             clipRule="evenodd"
 | 
				
			||||||
 | 
					//             d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z"
 | 
				
			||||||
 | 
					//             fill="#24292f"
 | 
				
			||||||
 | 
					//           />
 | 
				
			||||||
 | 
					//         </svg>
 | 
				
			||||||
 | 
					//         카카오톡
 | 
				
			||||||
 | 
					//       </a>
 | 
				
			||||||
 | 
					//     </Flex>
 | 
				
			||||||
 | 
					//     <Divider> OR LOGIN with EMAIL</Divider>
 | 
				
			||||||
 | 
					//     <Form<ILoginFormValue>
 | 
				
			||||||
 | 
					//       form={form}
 | 
				
			||||||
 | 
					//       layout="vertical"
 | 
				
			||||||
 | 
					//       initialValues={{ username: "admin", password: "admin" }}
 | 
				
			||||||
 | 
					//       onFinish={handleFinish}
 | 
				
			||||||
 | 
					//     >
 | 
				
			||||||
 | 
					//       <div className="mb-3">
 | 
				
			||||||
 | 
					//         {router?.query.error === "CredentialsSignin" ? (
 | 
				
			||||||
 | 
					//           <>
 | 
				
			||||||
 | 
					//             <Alert message="로그인을 실패했습니다. 아이디 또는 비밀번호를 다시 확인해주세요." type="error" />
 | 
				
			||||||
 | 
					//           </>
 | 
				
			||||||
 | 
					//         ) : (
 | 
				
			||||||
 | 
					//           <></>
 | 
				
			||||||
 | 
					//         )}
 | 
				
			||||||
 | 
					//       </div>
 | 
				
			||||||
 | 
					//       <Form.Item name="username" rules={[{ required: true, message: "아이디를 입력해주세요" }]}>
 | 
				
			||||||
 | 
					//         <Input size="large" placeholder="아이디" />
 | 
				
			||||||
 | 
					//       </Form.Item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//       <Form.Item name="password" rules={[{ required: true, message: "비밀번호를 입력해주세요" }]}>
 | 
				
			||||||
 | 
					//         <Input placeholder="비밀번호" type="password" size="large" />
 | 
				
			||||||
 | 
					//       </Form.Item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//       <Button size="large" type="primary" htmlType="submit" className="w-full" loading={isLoading}>
 | 
				
			||||||
 | 
					//         로그인
 | 
				
			||||||
 | 
					//       </Button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//       <a className="inline-block mt-2 text-gray-400" onClick={() => setShowPasswordModal(true)}>
 | 
				
			||||||
 | 
					//         비밀번호 찾기
 | 
				
			||||||
 | 
					//       </a>
 | 
				
			||||||
 | 
					//     </Form>
 | 
				
			||||||
 | 
					//   </Card>
 | 
				
			||||||
 | 
					// </Flex>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default React.memo(LoginForm)
 | 
				
			||||||
@@ -1,18 +0,0 @@
 | 
				
			|||||||
import styles from "./styles.module.css"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const TitleBGImage = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <div className={styles["title-bgimage-wraps"]}>
 | 
					 | 
				
			||||||
      <div className={styles["title-top-wrap"]}>
 | 
					 | 
				
			||||||
        <div></div>
 | 
					 | 
				
			||||||
        <div className={styles["title-bgimage-2"]}></div>
 | 
					 | 
				
			||||||
      </div>
 | 
					 | 
				
			||||||
      <div className={styles["title-bottom-wrap"]}>
 | 
					 | 
				
			||||||
        <div className={styles["title-bgimage-1"]}></div>
 | 
					 | 
				
			||||||
        <div></div>
 | 
					 | 
				
			||||||
      </div>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default TitleBGImage
 | 
					 | 
				
			||||||
@@ -1,39 +0,0 @@
 | 
				
			|||||||
.title-bgimage-wraps {
 | 
					 | 
				
			||||||
  width: 100%;
 | 
					 | 
				
			||||||
  height: 100%;
 | 
					 | 
				
			||||||
  background-color: #051224;
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  flex-direction: column;
 | 
					 | 
				
			||||||
  justify-content: space-between;
 | 
					 | 
				
			||||||
  position: absolute;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.title-top-wrap {
 | 
					 | 
				
			||||||
  width: 100%;
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  flex-direction: row;
 | 
					 | 
				
			||||||
  justify-content: space-between;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.title-bottom-wrap {
 | 
					 | 
				
			||||||
  width: 100%;
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  flex-direction: row;
 | 
					 | 
				
			||||||
  justify-content: space-between;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.title-bgimage-1 {
 | 
					 | 
				
			||||||
  background-image: url("/title_bgimage_1.png");
 | 
					 | 
				
			||||||
  background-size: contain;
 | 
					 | 
				
			||||||
  background-repeat: no-repeat;
 | 
					 | 
				
			||||||
  width: 747px;
 | 
					 | 
				
			||||||
  height: 394px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.title-bgimage-2 {
 | 
					 | 
				
			||||||
  background-image: url("/title_bgimage_2.png");
 | 
					 | 
				
			||||||
  background-size: contain;
 | 
					 | 
				
			||||||
  background-repeat: no-repeat;
 | 
					 | 
				
			||||||
  width: 709px;
 | 
					 | 
				
			||||||
  height: 325px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,10 +0,0 @@
 | 
				
			|||||||
import styles from "./styles.module.css"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const TitleLogo = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <div className={styles["title-image"]}></div>
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
export default TitleLogo
 | 
					 | 
				
			||||||
@@ -1,25 +0,0 @@
 | 
				
			|||||||
.title-image {
 | 
					 | 
				
			||||||
  background-image: url("/title2.png");
 | 
					 | 
				
			||||||
  background-repeat: no-repeat;
 | 
					 | 
				
			||||||
  background-position: center;
 | 
					 | 
				
			||||||
  background-size: contain;
 | 
					 | 
				
			||||||
  width: 83vw;
 | 
					 | 
				
			||||||
  height: 30vh;
 | 
					 | 
				
			||||||
  top: 16vh;
 | 
					 | 
				
			||||||
  position: absolute;
 | 
					 | 
				
			||||||
  animation-name: title-move;
 | 
					 | 
				
			||||||
  animation-duration: 1s;
 | 
					 | 
				
			||||||
  animation-iteration-count: 1;
 | 
					 | 
				
			||||||
  transition: all ease-in-out;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@keyframes title-move {
 | 
					 | 
				
			||||||
  from {
 | 
					 | 
				
			||||||
    opacity: 0;
 | 
					 | 
				
			||||||
    top: 20vh;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  to {
 | 
					 | 
				
			||||||
    opacity: 1;
 | 
					 | 
				
			||||||
    top: 16vh;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,24 +0,0 @@
 | 
				
			|||||||
import dynamic from "next/dynamic"
 | 
					 | 
				
			||||||
import styles from "./styles.module.css"
 | 
					 | 
				
			||||||
import TitleBGImage from "./TitleBGImage"
 | 
					 | 
				
			||||||
import TitleLogo from "./TitleLogo"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const Login = () => {
 | 
					 | 
				
			||||||
  // const GoogleOneTapLogin = dynamic(() => import("./GoogleOneTapLogin"), {
 | 
					 | 
				
			||||||
  //   ssr: false,
 | 
					 | 
				
			||||||
  // })
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <div className={styles["container"]}>
 | 
					 | 
				
			||||||
      <TitleBGImage />
 | 
					 | 
				
			||||||
      <div className={styles["title"]}>
 | 
					 | 
				
			||||||
        <div className={styles["title-wrapper"]}>
 | 
					 | 
				
			||||||
          <TitleLogo />
 | 
					 | 
				
			||||||
          {/* <GoogleOneTapLogin /> */}
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
      </div>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default Login
 | 
					 | 
				
			||||||
@@ -1,26 +0,0 @@
 | 
				
			|||||||
.container {
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  flex-direction: row;
 | 
					 | 
				
			||||||
  justify-content: center;
 | 
					 | 
				
			||||||
  position: fixed;
 | 
					 | 
				
			||||||
  width: 100%;
 | 
					 | 
				
			||||||
  height: 100%;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.title {
 | 
					 | 
				
			||||||
  align-items: flex-start;
 | 
					 | 
				
			||||||
  background-color: var(--white);
 | 
					 | 
				
			||||||
  border: 1px none;
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  height: 100%;
 | 
					 | 
				
			||||||
  width: 100%;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.title-wrapper {
 | 
					 | 
				
			||||||
  align-items: center;
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  flex-direction: column;
 | 
					 | 
				
			||||||
  width: 100%;
 | 
					 | 
				
			||||||
  height: 100%;
 | 
					 | 
				
			||||||
  position: absolute;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
import Login from "@/components/login"
 | 
					import LoginForm from "@/components/login/LoginForm"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Index = () => {
 | 
					const LoginPage = () => {
 | 
				
			||||||
  return <Login />
 | 
					  return <LoginForm />
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default Index
 | 
					export default LoginPage
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user