refactor: add GetIdByToken(),GetTokenConfig(),GetWatcher(),GetLogger()

This commit is contained in:
weloe
2023-05-18 02:41:30 +08:00
parent 2d9f8124cc
commit c50b10f5f6
3 changed files with 28 additions and 7 deletions

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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")
}