diff --git a/enforcer_interface.go b/enforcer_interface.go index 1546f5c..242a134 100644 --- a/enforcer_interface.go +++ b/enforcer_interface.go @@ -48,8 +48,8 @@ type IEnforcer interface { GetLoginCounts() (int, error) GetLoginTokenCounts() (int, error) - Kickout(id string, device string) error - Replaced(id string, device string) error + Kickout(id string, device ...string) error + Replaced(id string, device ...string) error // Banned banned api Banned(id string, service string, level int, time int64) error diff --git a/enforcer_manager_api.go b/enforcer_manager_api.go index b4ccb0e..d7c1ea9 100644 --- a/enforcer_manager_api.go +++ b/enforcer_manager_api.go @@ -1,6 +1,7 @@ package token_go import ( + "container/list" "fmt" "github.com/weloe/token-go/constant" "github.com/weloe/token-go/model" @@ -8,11 +9,16 @@ import ( ) // Replaced replace other user -func (e *Enforcer) Replaced(id string, device string) error { +func (e *Enforcer) Replaced(id string, device ...string) error { var err error if session := e.GetSession(id); session != nil { - // get by login device - tokenSignList := session.GetFilterTokenSign(device) + var tokenSignList *list.List + if len(device) == 0 { + tokenSignList = session.GetTokenSignListCopy() + } else { + // get by login device + tokenSignList = session.GetFilterTokenSign(device[0]) + } // sign account replaced for element := tokenSignList.Front(); element != nil; element = element.Next() { if tokenSign, ok := element.Value.(*model.TokenSign); ok { @@ -42,11 +48,17 @@ func (e *Enforcer) Replaced(id string, device string) error { } // Kickout kickout user -func (e *Enforcer) Kickout(id string, device string) error { +func (e *Enforcer) Kickout(id string, device ...string) error { session := e.GetSession(id) if session != nil { - // get by login device - tokenSignList := session.GetFilterTokenSign(device) + var tokenSignList *list.List + if len(device) == 0 { + tokenSignList = session.GetTokenSignListCopy() + } else { + // get by login device + tokenSignList = session.GetFilterTokenSign(device[0]) + } + // sign account kicked for element := tokenSignList.Front(); element != nil; element = element.Next() { if tokenSign, ok := element.Value.(*model.TokenSign); ok {