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 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
View File
@@ -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", "登录成功"))
} }
-2
View File
@@ -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(),
} }
+2 -19
View File
@@ -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}>
-3
View File
@@ -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 {
-2
View File
@@ -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