mirror of
https://github.com/weloe/token-go.git
synced 2025-10-04 15:12:47 +08:00
feat: reset session
This commit is contained in:
18
enforcer.go
18
enforcer.go
@@ -218,6 +218,10 @@ func (e *Enforcer) LoginByModel(id string, loginModel *model.Login, ctx ctx.Cont
|
|||||||
tokenSign := element.Value.(*model.TokenSign)
|
tokenSign := element.Value.(*model.TokenSign)
|
||||||
// delete tokenSign
|
// delete tokenSign
|
||||||
session.RemoveTokenSign(tokenSign.Value)
|
session.RemoveTokenSign(tokenSign.Value)
|
||||||
|
err = e.updateSession(id, session)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
// delete token-id
|
// delete token-id
|
||||||
err = e.adapter.Delete(e.spliceTokenKey(tokenSign.Value))
|
err = e.adapter.Delete(e.spliceTokenKey(tokenSign.Value))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -241,6 +245,7 @@ func (e *Enforcer) LoginByModel(id string, loginModel *model.Login, ctx ctx.Cont
|
|||||||
|
|
||||||
// Replaced replace other user
|
// 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 {
|
if session := e.GetSession(id); session != nil {
|
||||||
// get by login device
|
// get by login device
|
||||||
tokenSignList := session.GetFilterTokenSign(device)
|
tokenSignList := session.GetFilterTokenSign(device)
|
||||||
@@ -249,8 +254,12 @@ func (e *Enforcer) Replaced(id string, device string) error {
|
|||||||
if tokenSign, ok := element.Value.(*model.TokenSign); ok {
|
if tokenSign, ok := element.Value.(*model.TokenSign); ok {
|
||||||
elementV := tokenSign.Value
|
elementV := tokenSign.Value
|
||||||
session.RemoveTokenSign(elementV)
|
session.RemoveTokenSign(elementV)
|
||||||
|
err = e.updateSession(id, session)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
// sign token replaced
|
// sign token replaced
|
||||||
err := e.adapter.UpdateStr(e.spliceTokenKey(elementV), strconv.Itoa(constant.BeReplaced))
|
err = e.adapter.UpdateStr(e.spliceTokenKey(elementV), strconv.Itoa(constant.BeReplaced))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -264,7 +273,6 @@ func (e *Enforcer) Replaced(id string, device string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -377,8 +385,12 @@ func (e *Enforcer) Kickout(id string, device string) error {
|
|||||||
if tokenSign, ok := element.Value.(*model.TokenSign); ok {
|
if tokenSign, ok := element.Value.(*model.TokenSign); ok {
|
||||||
elementV := tokenSign.Value
|
elementV := tokenSign.Value
|
||||||
session.RemoveTokenSign(elementV)
|
session.RemoveTokenSign(elementV)
|
||||||
|
err := e.updateSession(id, session)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
// sign token kicked
|
// sign token kicked
|
||||||
err := e.adapter.UpdateStr(e.spliceTokenKey(elementV), strconv.Itoa(constant.BeKicked))
|
err = e.adapter.UpdateStr(e.spliceTokenKey(elementV), strconv.Itoa(constant.BeKicked))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@@ -93,6 +93,10 @@ func (e *Enforcer) logoutByToken(token string) error {
|
|||||||
if session != nil {
|
if session != nil {
|
||||||
// delete tokenSign
|
// delete tokenSign
|
||||||
session.RemoveTokenSign(token)
|
session.RemoveTokenSign(token)
|
||||||
|
err = e.updateSession(id, session)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// check TokenSignList length, if length == 0, delete this session
|
// check TokenSignList length, if length == 0, delete this session
|
||||||
if session != nil && session.TokenSignList.Len() == 0 {
|
if session != nil && session.TokenSignList.Len() == 0 {
|
||||||
|
Reference in New Issue
Block a user