From 54dd4e766bf117fa3a231d97a47fbdbc7acbca29 Mon Sep 17 00:00:00 2001 From: tickstep Date: Tue, 2 Apr 2024 09:42:08 +0800 Subject: [PATCH] fix switch user error --- internal/command/user_info.go | 4 ++-- internal/command/utils.go | 2 +- internal/config/pan_config.go | 19 +++++++++++++++---- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/internal/command/user_info.go b/internal/command/user_info.go index 22e1b2b..aecccbc 100644 --- a/internal/command/user_info.go +++ b/internal/command/user_info.go @@ -46,7 +46,7 @@ func CmdSu() cli.Command { 示例: aliyunpan su - aliyunpan su + aliyunpan su `, Category: "阿里云盘账号", Before: ReloadConfigFunc, @@ -94,7 +94,7 @@ func CmdSu() cli.Command { cli.ShowCommandHelp(c, c.Command.Name) } - switchedUser, err := config.Config.SwitchUser(uid, inputData) + switchedUser, err := config.Config.SwitchUser(uid) if err != nil { fmt.Printf("切换用户失败, %s\n", err) return nil diff --git a/internal/command/utils.go b/internal/command/utils.go index 5dbae88..6f8c531 100644 --- a/internal/command/utils.go +++ b/internal/command/utils.go @@ -225,7 +225,7 @@ func RefreshOpenTokenInNeed(activeUser *config.PanUser) bool { if activeUser.OpenapiToken != nil && len(activeUser.OpenapiToken.AccessToken) > 0 { cz := time.FixedZone("CST", 8*3600) // 东8区 expiredTime := time.Unix(activeUser.OpenapiToken.Expired, 0).In(cz) - now := time.Now() + now := time.Now().In(cz) if (expiredTime.Unix() - now.Unix()) <= (2 * 60) { // 有效期小于2min就刷新 pluginManger := plugins.NewPluginManager(config.GetPluginDir()) plugin, _ := pluginManger.GetPlugin() diff --git a/internal/config/pan_config.go b/internal/config/pan_config.go index 58dac5f..b8c15c6 100644 --- a/internal/config/pan_config.go +++ b/internal/config/pan_config.go @@ -424,6 +424,9 @@ func (c *PanConfig) ActiveUser() *PanUser { u.WorkdirFileEntity = *aliyunpan.NewFileEntityForRootDir() } else { u.WorkdirFileEntity = *fe + if u.Workdir == "" { + u.Workdir = "/" + } } } else if user.IsResourceDriveActive() { fe, err1 := u.PanClient().OpenapiPanClient().FileInfoByPath(u.ActiveDriveId, u.ResourceWorkdir) @@ -433,6 +436,9 @@ func (c *PanConfig) ActiveUser() *PanUser { u.ResourceWorkdirFileEntity = *aliyunpan.NewFileEntityForRootDir() } else { u.ResourceWorkdirFileEntity = *fe + if u.ResourceWorkdir == "" { + u.ResourceWorkdir = "/" + } } } else if user.IsAlbumDriveActive() { fe, err1 := u.PanClient().WebapiPanClient().FileInfoByPath(u.ActiveDriveId, u.AlbumWorkdir) @@ -442,6 +448,9 @@ func (c *PanConfig) ActiveUser() *PanUser { u.AlbumWorkdirFileEntity = *aliyunpan.NewFileEntityForRootDir() } else { u.AlbumWorkdirFileEntity = *fe + if u.AlbumWorkdir == "" { + u.AlbumWorkdir = "/" + } } } } @@ -463,7 +472,9 @@ func (c *PanConfig) SetActiveUser(user *PanUser) *PanUser { u.WebapiToken = user.WebapiToken u.OpenapiToken = user.OpenapiToken u.TicketId = user.TicketId - u.UpdateClient(user.PanClient().OpenapiPanClient(), user.PanClient().WebapiPanClient()) + if u.PanClient() != nil && user.PanClient() != nil { + u.UpdateClient(user.PanClient().OpenapiPanClient(), user.PanClient().WebapiPanClient()) + } needToInsert = false break } @@ -491,9 +502,9 @@ func (c *PanConfig) NumLogins() int { } // SwitchUser 切换登录用户 -func (c *PanConfig) SwitchUser(uid, username string) (*PanUser, error) { +func (c *PanConfig) SwitchUser(uid string) (*PanUser, error) { for _, u := range c.UserList { - if u.UserId == uid || u.AccountName == username { + if u.UserId == uid { return c.SetActiveUser(u), nil } } @@ -509,7 +520,7 @@ func (c *PanConfig) DeleteUser(uid string) (*PanUser, error) { c.ActiveUID = "" c.activeUser = nil if len(c.UserList) > 0 { - c.SwitchUser(c.UserList[0].UserId, "") + c.SwitchUser(c.UserList[0].UserId) } return u, nil }