From fb705365b1a550c068cdbad1bc3e7a7434b23baa Mon Sep 17 00:00:00 2001 From: xiaoyaofenfen <1254525673@qq.com> Date: Sat, 10 Dec 2022 14:47:00 +0800 Subject: [PATCH] add token plugin callback for login routine #203 --- internal/command/utils.go | 40 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/internal/command/utils.go b/internal/command/utils.go index cfba6fa..8d76490 100644 --- a/internal/command/utils.go +++ b/internal/command/utils.go @@ -214,6 +214,17 @@ func DoLoginHelper(refreshToken string) (refreshTokenStr string, webToken aliyun // TryLogin 尝试登录,基础应用支持的各类登录方式进行尝试成功登录 func TryLogin() *config.PanUser { + // 获取当前插件 + pluginManger := plugins.NewPluginManager(config.GetPluginDir()) + plugin, _ := pluginManger.GetPlugin() + params := &plugins.UserTokenRefreshFinishParams{ + Result: "success", + Message: "", + OldToken: "", + NewToken: "", + UpdatedAt: utils.NowTimeStr(), + } + // can do automatically login? for _, u := range config.Config.UserList { if u.UserId == config.Config.ActiveUID { @@ -227,6 +238,13 @@ func TryLogin() *config.PanUser { r, e := h.GetRefreshToken(u.TokenId) if e != nil { logger.Verboseln("try to login use tokenId error", e) + // login fail plugin callback + params.Result = "fail" + params.OldToken = u.RefreshToken + params.NewToken = "" + if er := plugin.UserTokenRefreshFinishCallback(plugins.GetContext(u), params); er != nil { + logger.Verbosef("UserTokenRefreshFinishCallback error: " + er.Error()) + } break } refreshToken, e := h.ParseSecureRefreshToken("", r.SecureRefreshToken) @@ -242,16 +260,36 @@ func TryLogin() *config.PanUser { fmt.Println("Token重新自动登录成功") // save new refresh token u.RefreshToken = refreshToken + } else { + // login fail plugin callback + params.Result = "fail" + params.OldToken = u.RefreshToken + params.NewToken = "" + if er := plugin.UserTokenRefreshFinishCallback(plugins.GetContext(u), params); er != nil { + logger.Verbosef("UserTokenRefreshFinishCallback error: " + er.Error()) + } } break } - // success + // plugin param + params.Result = "success" + params.OldToken = u.RefreshToken + params.NewToken = webToken.RefreshToken + + // success login, save new token and access token + u.RefreshToken = webToken.RefreshToken u.WebToken = webToken // save SaveConfigFunc(nil) // reload ReloadConfigFunc(nil) + + // do plugin callback + if er := plugin.UserTokenRefreshFinishCallback(plugins.GetContext(u), params); er != nil { + logger.Verbosef("UserTokenRefreshFinishCallback error: " + er.Error()) + } + return config.Config.ActiveUser() } }