From c50b10f5f60795581c0cf20be6a794f12c0caf32 Mon Sep 17 00:00:00 2001 From: weloe <1345895607@qq.com> Date: Thu, 18 May 2023 02:41:30 +0800 Subject: [PATCH] refactor: add GetIdByToken(),GetTokenConfig(),GetWatcher(),GetLogger() --- enforcer.go | 24 ++++++++++++++++++++---- enforcer_interface.go | 5 +++++ enforcer_internal_api.go | 6 +++--- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/enforcer.go b/enforcer.go index dcb9ebe..480a85e 100644 --- a/enforcer.go +++ b/enforcer.go @@ -26,6 +26,14 @@ type Enforcer struct { authManager interface{} } +func (e *Enforcer) GetWatcher() persist.Watcher { + return e.watcher +} + +func (e *Enforcer) GetLogger() log.Logger { + return e.logger +} + func NewDefaultAdapter() persist.Adapter { return persist.NewDefaultAdapter() } @@ -186,7 +194,7 @@ func (e *Enforcer) LoginByModel(id string, loginModel *model.Login, ctx ctx.Cont } // response token - err = e.responseToken(tokenValue, loginModel, ctx) + err = e.ResponseToken(tokenValue, loginModel, ctx) if err != nil { return "", err } @@ -309,7 +317,7 @@ func (e *Enforcer) IsLoginById(id string) (bool, error) { if session != nil { l := session.TokenSignList for _, tokenSign := range l { - str := e.adapter.GetStr(e.spliceTokenKey(tokenSign.Value)) + str := e.GetIdByToken(tokenSign.Value) if str == "" { continue } @@ -327,13 +335,17 @@ func (e *Enforcer) IsLoginById(id string) (bool, error) { return false, error } +func (e *Enforcer) GetIdByToken(token string) string { + return e.adapter.GetStr(e.spliceTokenKey(token)) +} + // IsLogin check if user logged in by token. func (e *Enforcer) IsLogin(ctx ctx.Context) (bool, error) { tokenValue := e.GetRequestToken(ctx) if tokenValue == "" { return false, nil } - str := e.adapter.GetStr(e.spliceTokenKey(tokenValue)) + str := e.GetIdByToken(tokenValue) if str == "" { return false, nil } @@ -351,7 +363,7 @@ func (e *Enforcer) CheckLogin(ctx ctx.Context) error { func (e *Enforcer) GetLoginId(ctx ctx.Context) (string, error) { tokenValue := e.GetRequestToken(ctx) - str := e.adapter.GetStr(e.spliceTokenKey(tokenValue)) + str := e.GetIdByToken(tokenValue) if str == "" { return "", errors.New("GetLoginId() failed: not logged in") } @@ -529,3 +541,7 @@ func (e *Enforcer) updateSession(id string, session *model.Session) error { } return nil } + +func (e *Enforcer) GetTokenConfig() config.TokenConfig { + return e.config +} diff --git a/enforcer_interface.go b/enforcer_interface.go index 446302c..9de8e82 100644 --- a/enforcer_interface.go +++ b/enforcer_interface.go @@ -1,6 +1,7 @@ package token_go import ( + "github.com/weloe/token-go/config" "github.com/weloe/token-go/ctx" "github.com/weloe/token-go/log" "github.com/weloe/token-go/model" @@ -16,6 +17,7 @@ type IEnforcer interface { IsLogin(ctx ctx.Context) (bool, error) IsLoginById(id string) (bool, error) GetLoginId(ctx ctx.Context) (string, error) + GetIdByToken(token string) string GetLoginCount(id string) int Replaced(id string, device string) error @@ -37,9 +39,12 @@ type IEnforcer interface { GetAdapter() persist.Adapter SetAdapter(adapter persist.Adapter) SetWatcher(watcher persist.Watcher) + GetWatcher() persist.Watcher SetLogger(logger log.Logger) + GetLogger() log.Logger EnableLog() IsLogEnable() bool GetSession(id string) *model.Session SetSession(id string, session *model.Session, timeout int64) error + GetTokenConfig() config.TokenConfig } diff --git a/enforcer_internal_api.go b/enforcer_internal_api.go index b5b4e3a..cf2fd53 100644 --- a/enforcer_internal_api.go +++ b/enforcer_internal_api.go @@ -47,8 +47,8 @@ func (e *Enforcer) createLoginToken(id string, loginModel *model.Login) (string, return tokenValue, nil } -// responseToken set token to cookie or header -func (e *Enforcer) responseToken(tokenValue string, loginModel *model.Login, ctx ctx.Context) error { +// ResponseToken set token to cookie or header +func (e *Enforcer) ResponseToken(tokenValue string, loginModel *model.Login, ctx ctx.Context) error { if ctx == nil { return nil } @@ -80,7 +80,7 @@ func (e *Enforcer) responseToken(tokenValue string, loginModel *model.Login, ctx func (e *Enforcer) logoutByToken(token string) error { var err error // delete token-id - id := e.adapter.GetStr(e.spliceTokenKey(token)) + id := e.GetIdByToken(token) if id == "" { return errors.New("not logged in") }