mirror of
https://github.com/SECTL/SecScore.git
synced 2026-07-19 12:34:22 +08:00
refactor(auth): 移除OAuth中的permission字段及相关逻辑
OAuth登录仅用于云服务,不再影响本地权限系统。移除相关字段和权限映射逻辑,简化代码结构。
This commit is contained in:
@@ -790,7 +790,6 @@ pub struct OAuthState {
|
|||||||
pub email: String,
|
pub email: String,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub github_username: Option<String>,
|
pub github_username: Option<String>,
|
||||||
pub permission: u32,
|
|
||||||
pub login_time: String,
|
pub login_time: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-22
@@ -48,14 +48,6 @@ const applyGlobalFontFamily = (fontValue?: string) => {
|
|||||||
document.body.style.fontFamily = fontFamily
|
document.body.style.fontFamily = fontFamily
|
||||||
}
|
}
|
||||||
|
|
||||||
const mapOAuthPermissionToAppPermission = (
|
|
||||||
oauthPermission: number
|
|
||||||
): "admin" | "points" | "view" => {
|
|
||||||
if (oauthPermission >= 18) return "admin"
|
|
||||||
if (oauthPermission >= 1) return "points"
|
|
||||||
return "view"
|
|
||||||
}
|
|
||||||
|
|
||||||
function MainContent(): React.JSX.Element {
|
function MainContent(): React.JSX.Element {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const navigate = useNavigate()
|
const navigate = useNavigate()
|
||||||
@@ -218,26 +210,19 @@ function MainContent(): React.JSX.Element {
|
|||||||
api.getAllSettings(),
|
api.getAllSettings(),
|
||||||
])
|
])
|
||||||
|
|
||||||
const oauthPermission =
|
// OAuth 登录仅用于云服务,不影响本地权限
|
||||||
oauthRes?.success && oauthRes.data
|
|
||||||
? mapOAuthPermissionToAppPermission(oauthRes.data.permission)
|
|
||||||
: null
|
|
||||||
if (oauthRes?.success && oauthRes.data?.name) {
|
if (oauthRes?.success && oauthRes.data?.name) {
|
||||||
setOAuthUserName(String(oauthRes.data.name))
|
setOAuthUserName(String(oauthRes.data.name))
|
||||||
} else {
|
} else {
|
||||||
setOAuthUserName(null)
|
setOAuthUserName(null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 本地权限系统独立于 OAuth
|
||||||
if (authRes?.success && authRes.data) {
|
if (authRes?.success && authRes.data) {
|
||||||
const anyPwd = Boolean(authRes.data.hasAdminPassword || authRes.data.hasPointsPassword)
|
const anyPwd = Boolean(authRes.data.hasAdminPassword || authRes.data.hasPointsPassword)
|
||||||
setHasAnyPassword(anyPwd)
|
setHasAnyPassword(anyPwd)
|
||||||
|
setPermission(authRes.data.permission)
|
||||||
const finalPermission = oauthPermission ?? authRes.data.permission
|
setAuthVisible(anyPwd && authRes.data.permission === "view")
|
||||||
setPermission(finalPermission)
|
|
||||||
setAuthVisible(anyPwd && finalPermission === "view")
|
|
||||||
} else if (oauthPermission) {
|
|
||||||
setPermission(oauthPermission)
|
|
||||||
setAuthVisible(false)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settingsRes?.success && settingsRes.data) {
|
if (settingsRes?.success && settingsRes.data) {
|
||||||
@@ -527,10 +512,8 @@ function MainContent(): React.JSX.Element {
|
|||||||
email: string
|
email: string
|
||||||
name: string
|
name: string
|
||||||
github_username?: string
|
github_username?: string
|
||||||
permission: number
|
|
||||||
}) => {
|
}) => {
|
||||||
setPermission(mapOAuthPermissionToAppPermission(userInfo.permission))
|
// OAuth 登录仅用于云服务,不修改本地权限
|
||||||
setAuthVisible(false)
|
|
||||||
setOAuthUserName(userInfo.name || null)
|
setOAuthUserName(userInfo.name || null)
|
||||||
messageApi.success(t("auth.oauthSuccess", "登录成功"))
|
messageApi.success(t("auth.oauthSuccess", "登录成功"))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ interface OAuthLoginProps {
|
|||||||
email: string
|
email: string
|
||||||
name: string
|
name: string
|
||||||
github_username?: string
|
github_username?: string
|
||||||
permission: number
|
|
||||||
}) => void
|
}) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,7 +169,6 @@ export function OAuthLogin({ visible, onClose, onSuccess }: OAuthLoginProps) {
|
|||||||
email: userRes.data.email,
|
email: userRes.data.email,
|
||||||
name: userRes.data.name,
|
name: userRes.data.name,
|
||||||
github_username: userRes.data.github_username,
|
github_username: userRes.data.github_username,
|
||||||
permission: userRes.data.permission,
|
|
||||||
login_time: new Date().toISOString(),
|
login_time: new Date().toISOString(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -203,15 +203,8 @@ export const Settings: React.FC<{
|
|||||||
email: string
|
email: string
|
||||||
name: string
|
name: string
|
||||||
github_username?: string
|
github_username?: string
|
||||||
permission: number
|
|
||||||
} | null>(null)
|
} | null>(null)
|
||||||
|
|
||||||
const getOAuthPermissionLabel = (oauthPermission: number) => {
|
|
||||||
if (oauthPermission >= 18) return t("permissions.admin")
|
|
||||||
if (oauthPermission >= 1) return t("permissions.points")
|
|
||||||
return t("permissions.view")
|
|
||||||
}
|
|
||||||
|
|
||||||
const permissionTag = useMemo(() => {
|
const permissionTag = useMemo(() => {
|
||||||
return (
|
return (
|
||||||
<Tag
|
<Tag
|
||||||
@@ -326,7 +319,6 @@ export const Settings: React.FC<{
|
|||||||
email: oauthStateRes.data.email,
|
email: oauthStateRes.data.email,
|
||||||
name: oauthStateRes.data.name,
|
name: oauthStateRes.data.name,
|
||||||
github_username: oauthStateRes.data.github_username,
|
github_username: oauthStateRes.data.github_username,
|
||||||
permission: oauthStateRes.data.permission,
|
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
setOAuthUserInfo(null)
|
setOAuthUserInfo(null)
|
||||||
@@ -347,7 +339,7 @@ export const Settings: React.FC<{
|
|||||||
await api.oauthClearLoginState()
|
await api.oauthClearLoginState()
|
||||||
setOAuthUserInfo(null)
|
setOAuthUserInfo(null)
|
||||||
window.dispatchEvent(new CustomEvent("ss:oauth-user-updated", { detail: { user: null } }))
|
window.dispatchEvent(new CustomEvent("ss:oauth-user-updated", { detail: { user: null } }))
|
||||||
messageApi.success(t("auth.logout"))
|
messageApi.success(t("settings.account.logoutSuccess", "已退出云账号"))
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
messageApi.error(error?.message || t("common.error"))
|
messageApi.error(error?.message || t("common.error"))
|
||||||
}
|
}
|
||||||
@@ -421,17 +413,15 @@ export const Settings: React.FC<{
|
|||||||
email?: string
|
email?: string
|
||||||
name?: string
|
name?: string
|
||||||
github_username?: string
|
github_username?: string
|
||||||
permission?: number
|
|
||||||
} | null
|
} | null
|
||||||
}>
|
}>
|
||||||
const user = customEvent?.detail?.user
|
const user = customEvent?.detail?.user
|
||||||
if (user?.user_id && user.email && user.name && typeof user.permission === "number") {
|
if (user?.user_id && user.email && user.name) {
|
||||||
setOAuthUserInfo({
|
setOAuthUserInfo({
|
||||||
user_id: user.user_id,
|
user_id: user.user_id,
|
||||||
email: user.email,
|
email: user.email,
|
||||||
name: user.name,
|
name: user.name,
|
||||||
github_username: user.github_username,
|
github_username: user.github_username,
|
||||||
permission: user.permission,
|
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
setOAuthUserInfo(null)
|
setOAuthUserInfo(null)
|
||||||
@@ -1163,13 +1153,6 @@ export const Settings: React.FC<{
|
|||||||
</Text>
|
</Text>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
|
||||||
<Text type="secondary">{t("settings.account.permission")}:</Text>
|
|
||||||
<Tag color="blue" style={{ marginLeft: "8px" }}>
|
|
||||||
{getOAuthPermissionLabel(oauthUserInfo.permission)}
|
|
||||||
</Tag>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<Divider />
|
<Divider />
|
||||||
|
|
||||||
<Button danger onClick={handleOAuthLogout}>
|
<Button danger onClick={handleOAuthLogout}>
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ export interface OAuthUserInfo {
|
|||||||
email: string
|
email: string
|
||||||
name: string
|
name: string
|
||||||
github_username?: string
|
github_username?: string
|
||||||
permission: number
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface OAuthLoginState {
|
export interface OAuthLoginState {
|
||||||
@@ -22,7 +21,6 @@ export interface OAuthLoginState {
|
|||||||
email: string
|
email: string
|
||||||
name: string
|
name: string
|
||||||
github_username?: string
|
github_username?: string
|
||||||
permission: number
|
|
||||||
login_time: string
|
login_time: string
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,7 +52,6 @@ export function useOAuthPersist() {
|
|||||||
email: result.data.email,
|
email: result.data.email,
|
||||||
name: result.data.name,
|
name: result.data.name,
|
||||||
github_username: result.data.github_username,
|
github_username: result.data.github_username,
|
||||||
permission: result.data.permission,
|
|
||||||
})
|
})
|
||||||
setIsAuthenticated(true)
|
setIsAuthenticated(true)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -574,7 +574,6 @@ const api = {
|
|||||||
email: string
|
email: string
|
||||||
name: string
|
name: string
|
||||||
github_username?: string
|
github_username?: string
|
||||||
permission: number
|
|
||||||
login_time: string
|
login_time: string
|
||||||
}): Promise<{
|
}): Promise<{
|
||||||
success: boolean
|
success: boolean
|
||||||
@@ -591,7 +590,6 @@ const api = {
|
|||||||
email: string
|
email: string
|
||||||
name: string
|
name: string
|
||||||
github_username?: string
|
github_username?: string
|
||||||
permission: number
|
|
||||||
login_time: string
|
login_time: string
|
||||||
} | null
|
} | null
|
||||||
message?: string
|
message?: string
|
||||||
|
|||||||
Reference in New Issue
Block a user