mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2024-12-24 07:17:48 +08:00
48 lines
971 B
Go
48 lines
971 B
Go
|
package psession
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"time"
|
||
|
|
||
|
"github.com/1Panel-dev/1Panel/core/init/cache/badger_db"
|
||
|
)
|
||
|
|
||
|
type SessionUser struct {
|
||
|
ID uint `json:"id"`
|
||
|
Name string `json:"name"`
|
||
|
}
|
||
|
|
||
|
type PSession struct {
|
||
|
ExpireTime int64 `json:"expire_time"`
|
||
|
store *badger_db.Cache
|
||
|
}
|
||
|
|
||
|
func NewPSession(db *badger_db.Cache) *PSession {
|
||
|
return &PSession{
|
||
|
store: db,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (p *PSession) Get(sessionID string) (SessionUser, error) {
|
||
|
var result SessionUser
|
||
|
item, err := p.store.Get(sessionID)
|
||
|
if err != nil {
|
||
|
return result, err
|
||
|
}
|
||
|
_ = json.Unmarshal(item, &result)
|
||
|
return result, nil
|
||
|
}
|
||
|
|
||
|
func (p *PSession) Set(sessionID string, user SessionUser, ttlSeconds int) error {
|
||
|
p.ExpireTime = time.Now().Unix() + int64(ttlSeconds)
|
||
|
return p.store.SetWithTTL(sessionID, user, time.Second*time.Duration(ttlSeconds))
|
||
|
}
|
||
|
|
||
|
func (p *PSession) Delete(sessionID string) error {
|
||
|
return p.store.Del(sessionID)
|
||
|
}
|
||
|
|
||
|
func (p *PSession) Clean() error {
|
||
|
return p.store.Clean()
|
||
|
}
|