88 lines
2.1 KiB
Go
88 lines
2.1 KiB
Go
package utils
|
|
|
|
import (
|
|
"encoding/json"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"schisandra-cloud-album/global"
|
|
)
|
|
|
|
// ResponseData 返回数据
|
|
type ResponseData struct {
|
|
AccessToken string `json:"access_token"`
|
|
RefreshToken string `json:"refresh_token"`
|
|
ExpiresAt int64 `json:"expires_at"`
|
|
UID *string `json:"uid"`
|
|
UserInfo UserInfo `json:"user_info"`
|
|
}
|
|
type UserInfo struct {
|
|
Username string `json:"username,omitempty"`
|
|
Nickname string `json:"nickname"`
|
|
Avatar string `json:"avatar"`
|
|
Phone string `json:"phone,omitempty"`
|
|
Email string `json:"email,omitempty"`
|
|
Gender string `json:"gender"`
|
|
Status int64 `json:"status"`
|
|
CreateAt time.Time `json:"create_at"`
|
|
}
|
|
|
|
// SetSession sets session data with key and data
|
|
func SetSession(c *gin.Context, key string, data interface{}) error {
|
|
session, err := global.Session.Get(c.Request, key)
|
|
if err != nil {
|
|
global.LOG.Error("SetSession failed: ", err)
|
|
return err
|
|
}
|
|
jsonData, err := json.Marshal(data)
|
|
if err != nil {
|
|
global.LOG.Error("SetSession failed: ", err)
|
|
return err
|
|
}
|
|
session.Values[key] = jsonData
|
|
err = session.Save(c.Request, c.Writer)
|
|
if err != nil {
|
|
global.LOG.Error("SetSession failed: ", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// GetSession gets session data with key
|
|
func GetSession(c *gin.Context, key string) *ResponseData {
|
|
session, err := global.Session.Get(c.Request, key)
|
|
if err != nil {
|
|
global.LOG.Error("GetSession failed: ", err)
|
|
return nil
|
|
}
|
|
jsonData, ok := session.Values[key]
|
|
if !ok {
|
|
global.LOG.Error("GetSession failed: ", "key not found")
|
|
return nil
|
|
}
|
|
data := ResponseData{}
|
|
err = json.Unmarshal(jsonData.([]byte), &data)
|
|
if err != nil {
|
|
global.LOG.Error("GetSession failed: ", err)
|
|
return nil
|
|
}
|
|
return &data
|
|
}
|
|
|
|
// DelSession deletes session data with key
|
|
func DelSession(c *gin.Context, key string) {
|
|
session, err := global.Session.Get(c.Request, key)
|
|
if err != nil {
|
|
global.LOG.Error("DelSession failed: ", err)
|
|
return
|
|
}
|
|
delete(session.Values, key)
|
|
err = session.Save(c.Request, c.Writer)
|
|
if err != nil {
|
|
global.LOG.Error("DelSession failed: ", err)
|
|
return
|
|
}
|
|
return
|
|
}
|