From 2f3f95bcf65fe7c30a60cf8af7e4ad8322e50901 Mon Sep 17 00:00:00 2001 From: zzjin Date: Wed, 3 Aug 2022 22:43:52 +0800 Subject: [PATCH] update login redirect (#1455) try update callback api Signed-off-by: zzjin --- desktop/frontend/.env | 3 ++ desktop/frontend/.prettierrc.js | 38 +++++++++++++++ .../frontend/deploy/manifests/frontend.yaml | 9 ++-- desktop/frontend/next.config.js | 6 ++- desktop/frontend/pages/api/hello.ts | 13 ------ desktop/frontend/pages/login.tsx | 43 ----------------- desktop/frontend/src/lib/api.ts | 26 +++++++++++ desktop/frontend/{ => src}/pages/_app.tsx | 0 .../pages/dashboard/dashboard.module.css} | 0 .../{ => src}/pages/dashboard/index.tsx | 17 ++++--- desktop/frontend/{ => src}/pages/index.tsx | 2 +- desktop/frontend/src/pages/login/callback.tsx | 34 ++++++++++++++ desktop/frontend/src/pages/login/index.tsx | 17 +++++++ desktop/frontend/src/store/session.ts | 34 ++++++++++++++ .../frontend/{ => src}/styles/Home.module.css | 0 desktop/frontend/{ => src}/styles/globals.css | 0 desktop/frontend/styles/Login.module.css | 40 ---------------- go.mod | 5 +- go.sum | 2 + pkg/auth/auth.go | 13 +++++- pkg/auth/sso/casdoor.go | 34 +++++++------- pkg/auth/sso/client.go | 10 ++-- pkg/utils/httpserver/cors.go | 6 +-- pkg/utils/httpserver/go_restful.go | 4 +- service/auth/api/api.go | 46 +++++++++++++++++-- service/auth/go.mod | 3 +- service/auth/go.sum | 2 + 27 files changed, 259 insertions(+), 148 deletions(-) create mode 100644 desktop/frontend/.env create mode 100644 desktop/frontend/.prettierrc.js delete mode 100755 desktop/frontend/pages/api/hello.ts delete mode 100755 desktop/frontend/pages/login.tsx create mode 100644 desktop/frontend/src/lib/api.ts rename desktop/frontend/{ => src}/pages/_app.tsx (100%) rename desktop/frontend/{styles/Dashboard.module.css => src/pages/dashboard/dashboard.module.css} (100%) rename desktop/frontend/{ => src}/pages/dashboard/index.tsx (68%) rename desktop/frontend/{ => src}/pages/index.tsx (98%) create mode 100644 desktop/frontend/src/pages/login/callback.tsx create mode 100644 desktop/frontend/src/pages/login/index.tsx create mode 100644 desktop/frontend/src/store/session.ts rename desktop/frontend/{ => src}/styles/Home.module.css (100%) rename desktop/frontend/{ => src}/styles/globals.css (100%) delete mode 100644 desktop/frontend/styles/Login.module.css diff --git a/desktop/frontend/.env b/desktop/frontend/.env new file mode 100644 index 000000000..a5f224662 --- /dev/null +++ b/desktop/frontend/.env @@ -0,0 +1,3 @@ +PUBLIC_URL=. + +NEXT_PUBLIC_API_HOST=/ diff --git a/desktop/frontend/.prettierrc.js b/desktop/frontend/.prettierrc.js new file mode 100644 index 000000000..49c1a1136 --- /dev/null +++ b/desktop/frontend/.prettierrc.js @@ -0,0 +1,38 @@ +// .prettierrc.js +module.exports = { + // 一行最多 100 字符 + printWidth: 100, + // 使用 4 个空格缩进 + tabWidth: 2, + // 不使用缩进符,而使用空格 + useTabs: false, + // 行尾需要有分号 + semi: true, + // 使用单引号 + singleQuote: true, + // 对象的 key 仅在必要时用引号 + quoteProps: 'as-needed', + // jsx 不使用单引号,而使用双引号 + jsxSingleQuote: false, + // 末尾不需要逗号 + trailingComma: 'none', + // 大括号内的首尾需要空格 + bracketSpacing: true, + // jsx 标签的反尖括号需要换行 + jsxBracketSameLine: false, + // 箭头函数,只有一个参数的时候,也需要括号 + arrowParens: 'always', + // 每个文件格式化的范围是文件的全部内容 + rangeStart: 0, + rangeEnd: Infinity, + // 不需要写文件开头的 @prettier + requirePragma: false, + // 不需要自动在文件开头插入 @prettier + insertPragma: false, + // 使用默认的折行标准 + proseWrap: 'preserve', + // 根据显示样式决定 html 要不要折行 + htmlWhitespaceSensitivity: 'css', + // 换行符使用 lf + endOfLine: 'lf' +}; diff --git a/desktop/frontend/deploy/manifests/frontend.yaml b/desktop/frontend/deploy/manifests/frontend.yaml index 63e7be8c6..f5efb2044 100644 --- a/desktop/frontend/deploy/manifests/frontend.yaml +++ b/desktop/frontend/deploy/manifests/frontend.yaml @@ -19,7 +19,6 @@ metadata: namespace: sealos --- - # kind: ClusterRoleBinding # apiVersion: rbac.authorization.k8s.io/v1 # metadata: @@ -49,7 +48,6 @@ spec: app: desktop-frontend --- - apiVersion: v1 kind: ConfigMap metadata: @@ -60,7 +58,6 @@ data: addr: :3000 --- - apiVersion: apps/v1 kind: Deployment metadata: @@ -83,9 +80,9 @@ spec: image: fanux/frontend:latest imagePullPolicy: Always volumeMounts: - - name: desktop-frontend-volume - mountPath: /auth.yaml - subPath: auth.yaml + - name: desktop-frontend-volume + mountPath: /auth.yaml + subPath: auth.yaml volumes: - name: desktop-frontend-volume configMap: diff --git a/desktop/frontend/next.config.js b/desktop/frontend/next.config.js index 7eb7101a9..376c4b288 100755 --- a/desktop/frontend/next.config.js +++ b/desktop/frontend/next.config.js @@ -1,4 +1,8 @@ -/** @type {import('next').NextConfig} */ +// @ts-check + +/** + * @type {import('next').NextConfig} + **/ const nextConfig = { reactStrictMode: true, swcMinify: true, diff --git a/desktop/frontend/pages/api/hello.ts b/desktop/frontend/pages/api/hello.ts deleted file mode 100755 index f8bcc7e5c..000000000 --- a/desktop/frontend/pages/api/hello.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Next.js API route support: https://nextjs.org/docs/api-routes/introduction -import type { NextApiRequest, NextApiResponse } from 'next' - -type Data = { - name: string -} - -export default function handler( - req: NextApiRequest, - res: NextApiResponse -) { - res.status(200).json({ name: 'John Doe' }) -} diff --git a/desktop/frontend/pages/login.tsx b/desktop/frontend/pages/login.tsx deleted file mode 100755 index 61bcb4c77..000000000 --- a/desktop/frontend/pages/login.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import type { NextPage } from 'next' -import Head from 'next/head' -import { UserOutlined, LockOutlined } from '@ant-design/icons' -import { Input, Button } from 'antd' -import styles from '../styles/Login.module.css' -import { useRouter } from 'next/router' - - - - -const Login: NextPage = () => { - const router = useRouter() - - const handleLogin = () => { - router.push('/dashboard') - } - - return ( -
- - Login Page - - - - -
-

- Sealos Login -

- -
- } /> -
- } /> -
- -
-
-
- ) -} - -export default Login diff --git a/desktop/frontend/src/lib/api.ts b/desktop/frontend/src/lib/api.ts new file mode 100644 index 000000000..b2c378e00 --- /dev/null +++ b/desktop/frontend/src/lib/api.ts @@ -0,0 +1,26 @@ +const api_host = process.env.NEXT_PUBLIC_API_HOST; + +export default async function fetchAPI( + query: string = '', + variables?: any, + method: string = 'GET' +) { + const headers = { 'Content-Type': 'application/json' }; + + if (method === 'GET' && variables !== undefined) { + query += '?' + new URLSearchParams(variables).toString(); + } + + const res = await fetch(api_host + query, { + headers, + method: method, + body: method !== 'GET' && variables ? JSON.stringify(variables) : undefined + }); + + const json = await res.json(); + if (json.errors) { + console.error(json.errors); + throw new Error('Failed to fetch API'); + } + return json.data; +} diff --git a/desktop/frontend/pages/_app.tsx b/desktop/frontend/src/pages/_app.tsx similarity index 100% rename from desktop/frontend/pages/_app.tsx rename to desktop/frontend/src/pages/_app.tsx diff --git a/desktop/frontend/styles/Dashboard.module.css b/desktop/frontend/src/pages/dashboard/dashboard.module.css similarity index 100% rename from desktop/frontend/styles/Dashboard.module.css rename to desktop/frontend/src/pages/dashboard/dashboard.module.css diff --git a/desktop/frontend/pages/dashboard/index.tsx b/desktop/frontend/src/pages/dashboard/index.tsx similarity index 68% rename from desktop/frontend/pages/dashboard/index.tsx rename to desktop/frontend/src/pages/dashboard/index.tsx index 2412315df..f8901051d 100755 --- a/desktop/frontend/pages/dashboard/index.tsx +++ b/desktop/frontend/src/pages/dashboard/index.tsx @@ -1,10 +1,9 @@ import type { NextPage } from 'next' import Head from 'next/head' -import styles from '../../styles/Dashboard.module.css' +import styles from './dashboard.module.css' import { SearchOutlined } from '@ant-design/icons'; import { Tooltip, Button } from 'antd' - const Login: NextPage = () => { return (
@@ -18,16 +17,16 @@ const Login: NextPage = () => {
header menu
-