refactor(auth): 移除OAuth中的permission字段及相关逻辑

OAuth登录仅用于云服务,不再影响本地权限系统。移除相关字段和权限映射逻辑,简化代码结构。
This commit is contained in:
Yukino_fox
2026-04-25 14:58:38 +08:00
parent 1cbca5a5c1
commit 2a2ec8504a
6 changed files with 7 additions and 49 deletions
-1
View File
@@ -790,7 +790,6 @@ pub struct OAuthState {
pub email: String,
pub name: String,
pub github_username: Option<String>,
pub permission: u32,
pub login_time: String,
}
+5 -22
View File
@@ -48,14 +48,6 @@ const applyGlobalFontFamily = (fontValue?: string) => {
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 {
const { t } = useTranslation()
const navigate = useNavigate()
@@ -218,26 +210,19 @@ function MainContent(): React.JSX.Element {
api.getAllSettings(),
])
const oauthPermission =
oauthRes?.success && oauthRes.data
? mapOAuthPermissionToAppPermission(oauthRes.data.permission)
: null
// OAuth 登录仅用于云服务,不影响本地权限
if (oauthRes?.success && oauthRes.data?.name) {
setOAuthUserName(String(oauthRes.data.name))
} else {
setOAuthUserName(null)
}
// 本地权限系统独立于 OAuth
if (authRes?.success && authRes.data) {
const anyPwd = Boolean(authRes.data.hasAdminPassword || authRes.data.hasPointsPassword)
setHasAnyPassword(anyPwd)
const finalPermission = oauthPermission ?? authRes.data.permission
setPermission(finalPermission)
setAuthVisible(anyPwd && finalPermission === "view")
} else if (oauthPermission) {
setPermission(oauthPermission)
setAuthVisible(false)
setPermission(authRes.data.permission)
setAuthVisible(anyPwd && authRes.data.permission === "view")
}
if (settingsRes?.success && settingsRes.data) {
@@ -527,10 +512,8 @@ function MainContent(): React.JSX.Element {
email: string
name: string
github_username?: string
permission: number
}) => {
setPermission(mapOAuthPermissionToAppPermission(userInfo.permission))
setAuthVisible(false)
// OAuth 登录仅用于云服务,不修改本地权限
setOAuthUserName(userInfo.name || null)
messageApi.success(t("auth.oauthSuccess", "登录成功"))
}
-2
View File
@@ -12,7 +12,6 @@ interface OAuthLoginProps {
email: string
name: string
github_username?: string
permission: number
}) => void
}
@@ -170,7 +169,6 @@ export function OAuthLogin({ visible, onClose, onSuccess }: OAuthLoginProps) {
email: userRes.data.email,
name: userRes.data.name,
github_username: userRes.data.github_username,
permission: userRes.data.permission,
login_time: new Date().toISOString(),
}
+2 -19
View File
@@ -203,15 +203,8 @@ export const Settings: React.FC<{
email: string
name: string
github_username?: string
permission: number
} | 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(() => {
return (
<Tag
@@ -326,7 +319,6 @@ export const Settings: React.FC<{
email: oauthStateRes.data.email,
name: oauthStateRes.data.name,
github_username: oauthStateRes.data.github_username,
permission: oauthStateRes.data.permission,
})
} else {
setOAuthUserInfo(null)
@@ -347,7 +339,7 @@ export const Settings: React.FC<{
await api.oauthClearLoginState()
setOAuthUserInfo(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) {
messageApi.error(error?.message || t("common.error"))
}
@@ -421,17 +413,15 @@ export const Settings: React.FC<{
email?: string
name?: string
github_username?: string
permission?: number
} | null
}>
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({
user_id: user.user_id,
email: user.email,
name: user.name,
github_username: user.github_username,
permission: user.permission,
})
} else {
setOAuthUserInfo(null)
@@ -1163,13 +1153,6 @@ export const Settings: React.FC<{
</Text>
</div>
<div>
<Text type="secondary">{t("settings.account.permission")}:</Text>
<Tag color="blue" style={{ marginLeft: "8px" }}>
{getOAuthPermissionLabel(oauthUserInfo.permission)}
</Tag>
</div>
<Divider />
<Button danger onClick={handleOAuthLogout}>
-3
View File
@@ -10,7 +10,6 @@ export interface OAuthUserInfo {
email: string
name: string
github_username?: string
permission: number
}
export interface OAuthLoginState {
@@ -22,7 +21,6 @@ export interface OAuthLoginState {
email: string
name: string
github_username?: string
permission: number
login_time: string
}
@@ -54,7 +52,6 @@ export function useOAuthPersist() {
email: result.data.email,
name: result.data.name,
github_username: result.data.github_username,
permission: result.data.permission,
})
setIsAuthenticated(true)
} else {
-2
View File
@@ -574,7 +574,6 @@ const api = {
email: string
name: string
github_username?: string
permission: number
login_time: string
}): Promise<{
success: boolean
@@ -591,7 +590,6 @@ const api = {
email: string
name: string
github_username?: string
permission: number
login_time: string
} | null
message?: string