parent
80f30465e9
commit
589c399488
@ -0,0 +1,38 @@
|
|||||||
|
package middleware
|
||||||
|
|
||||||
|
import (
|
||||||
|
"cloudreve/models"
|
||||||
|
"cloudreve/pkg/serializer"
|
||||||
|
"github.com/gin-contrib/sessions"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CurrentUser 获取登录用户
|
||||||
|
func CurrentUser() gin.HandlerFunc {
|
||||||
|
return func(c *gin.Context) {
|
||||||
|
session := sessions.Default(c)
|
||||||
|
uid := session.Get("user_id")
|
||||||
|
if uid != nil {
|
||||||
|
user, err := model.GetUserByID(uid)
|
||||||
|
if err == nil {
|
||||||
|
c.Set("user", &user)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
c.Next()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// AuthRequired 需要登录
|
||||||
|
func AuthRequired() gin.HandlerFunc {
|
||||||
|
return func(c *gin.Context) {
|
||||||
|
if user, _ := c.Get("user"); user != nil {
|
||||||
|
if _, ok := user.(*model.User); ok {
|
||||||
|
c.Next()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(200, serializer.CheckLogin())
|
||||||
|
c.Abort()
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package middleware
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSession(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
|
||||||
|
handler := Session("2333")
|
||||||
|
asserts.NotNil(handler)
|
||||||
|
asserts.NotNil(Store)
|
||||||
|
asserts.IsType(emptyFunc(), handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func emptyFunc() gin.HandlerFunc {
|
||||||
|
return func(c *gin.Context) {}
|
||||||
|
}
|
@ -1,7 +1,40 @@
|
|||||||
package serializer
|
package serializer
|
||||||
|
|
||||||
// UserOption 用户个性化配置字段
|
import "cloudreve/models"
|
||||||
type UserOption struct {
|
|
||||||
ProfileOn int `json:"profile_on"`
|
// CheckLogin 检查登录
|
||||||
WebDAVKey string `json:"webdav_key"`
|
func CheckLogin() Response {
|
||||||
|
return Response{
|
||||||
|
Code: CodeCheckLogin,
|
||||||
|
Msg: "未登录",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// User 用户序列化器
|
||||||
|
type User struct {
|
||||||
|
ID uint `json:"id"`
|
||||||
|
Email string `json:"user_name"`
|
||||||
|
Nickname string `json:"nickname"`
|
||||||
|
Status int `json:"status"`
|
||||||
|
Avatar string `json:"avatar"`
|
||||||
|
CreatedAt int64 `json:"created_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// BuildUser 序列化用户
|
||||||
|
func BuildUser(user model.User) User {
|
||||||
|
return User{
|
||||||
|
ID: user.ID,
|
||||||
|
Email: user.Email,
|
||||||
|
Nickname: user.Nick,
|
||||||
|
Status: user.Status,
|
||||||
|
Avatar: user.Avatar,
|
||||||
|
CreatedAt: user.CreatedAt.Unix(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// BuildUserResponse 序列化用户响应
|
||||||
|
func BuildUserResponse(user model.User) Response {
|
||||||
|
return Response{
|
||||||
|
Data: BuildUser(user),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in new issue