mirror of
				https://github.com/1Panel-dev/1Panel.git
				synced 2025-10-30 02:36:18 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			911 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			911 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package psession
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	"github.com/1Panel-dev/1Panel/backend/init/cache/badger_db"
 | |
| 	"time"
 | |
| )
 | |
| 
 | |
| 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)
 | |
| }
 |