OIDC 登录/绑定回调写系统日志
CI / test (push) Successful in 30s

This commit is contained in:
2026-07-14 11:00:55 +08:00
parent b4ef98a25e
commit 2fea315430
5 changed files with 41 additions and 12 deletions
+6 -6
View File
@@ -187,7 +187,7 @@ type externalIdentity struct {
// HandleCallback 完成授权码回调:换取身份后,bind 模式写绑定、login 模式签发 JWT;
// token 仅 login 模式非空;mode 尽力返回(state 无效时为空),供 api 决定错误回跳页面。
func (o *OAuthService) HandleCallback(ctx context.Context, provider, state, code string) (token, display, mode string, err error) {
func (o *OAuthService) HandleCallback(ctx context.Context, provider, state, code string) (token, username, mode string, err error) {
p, err := o.takeState(provider, state)
if err != nil {
return "", "", "", err
@@ -198,14 +198,14 @@ func (o *OAuthService) HandleCallback(ctx context.Context, provider, state, code
}
if p.mode == "bind" {
if err := o.bind(ctx, p.username, provider, ident); err != nil {
return "", ident.Display, p.mode, err
return "", p.username, p.mode, err
}
// 绑定属敏感变更:版本递增使旧令牌失效,同时为操作者签新令牌随回跳带回
token, _, err := o.auth.RevokeSessions(ctx, p.username)
return token, ident.Display, p.mode, err
return token, p.username, p.mode, err
}
token, display, err = o.loginByIdentity(ctx, provider, ident)
return token, display, p.mode, err
token, username, err = o.loginByIdentity(ctx, provider, ident)
return token, username, p.mode, err
}
// fetchIdentity 用授权码向 provider 换取稳定 subject 与展示名。
@@ -311,7 +311,7 @@ func (o *OAuthService) loginByIdentity(ctx context.Context, provider string, ide
return "", "", fmt.Errorf("find bound user: %w", err)
}
token, _, err := o.auth.signToken(user.Username, user.TokenVersion)
return token, ident.Display, err
return token, user.Username, err
}
// Identities 列出账号已绑定的外部身份。