From 28df5ca8335432db8158ac9b649a7d0f437fc289 Mon Sep 17 00:00:00 2001 From: HFO4 <912394456@qq.com> Date: Mon, 25 Nov 2019 14:08:11 +0800 Subject: [PATCH] Modify: return user information in siteConfig while logged in --- models/user.go | 1 + pkg/serializer/setting.go | 8 +++++++- pkg/serializer/setting_test.go | 6 +++--- pkg/serializer/user.go | 34 +++++++++++++++++++++------------- routers/controllers/site.go | 9 ++++++++- 5 files changed, 40 insertions(+), 18 deletions(-) diff --git a/models/user.go b/models/user.go index 6cb0ea7..9de8c74 100644 --- a/models/user.go +++ b/models/user.go @@ -52,6 +52,7 @@ type UserOption struct { ProfileOn int `json:"profile_on"` PreferredPolicy uint `json:"preferred_policy"` WebDAVKey string `json:"webdav_key"` + PreferredTheme string `json:"preferred_theme"` } // DeductionStorage 减少用户已用容量 diff --git a/pkg/serializer/setting.go b/pkg/serializer/setting.go index 23117c8..7e4fd6d 100644 --- a/pkg/serializer/setting.go +++ b/pkg/serializer/setting.go @@ -12,6 +12,7 @@ type SiteConfig struct { QQLogin bool `json:"QQLogin"` Themes string `json:"themes"` DefaultTheme string `json:"defaultTheme"` + User User `json:"user"` } func checkSettingValue(setting map[string]string, key string) string { @@ -22,7 +23,11 @@ func checkSettingValue(setting map[string]string, key string) string { } // BuildSiteConfig 站点全局设置 -func BuildSiteConfig(settings map[string]string) Response { +func BuildSiteConfig(settings map[string]string, user *model.User) Response { + var userRes User + if user != nil { + userRes = BuildUser(*user) + } return Response{ Data: SiteConfig{ SiteName: checkSettingValue(settings, "siteName"), @@ -33,5 +38,6 @@ func BuildSiteConfig(settings map[string]string) Response { QQLogin: model.IsTrueVal(checkSettingValue(settings, "qq_login")), Themes: checkSettingValue(settings, "themes"), DefaultTheme: checkSettingValue(settings, "defaultTheme"), + User: userRes, }} } diff --git a/pkg/serializer/setting_test.go b/pkg/serializer/setting_test.go index dfed526..b465e68 100644 --- a/pkg/serializer/setting_test.go +++ b/pkg/serializer/setting_test.go @@ -15,12 +15,12 @@ func TestCheckSettingValue(t *testing.T) { func TestBuildSiteConfig(t *testing.T) { asserts := assert.New(t) - res := BuildSiteConfig(map[string]string{"not exist": ""}) + res := BuildSiteConfig(map[string]string{"not exist": ""}, nil) asserts.Equal("", res.Data.(SiteConfig).SiteName) - res = BuildSiteConfig(map[string]string{"siteName": "123"}) + res = BuildSiteConfig(map[string]string{"siteName": "123"}, nil) asserts.Equal("123", res.Data.(SiteConfig).SiteName) - res = BuildSiteConfig(map[string]string{"qq_login": "1"}) + res = BuildSiteConfig(map[string]string{"qq_login": "1"}, nil) asserts.Equal(true, res.Data.(SiteConfig).QQLogin) } diff --git a/pkg/serializer/user.go b/pkg/serializer/user.go index e33dac6..22aea59 100644 --- a/pkg/serializer/user.go +++ b/pkg/serializer/user.go @@ -1,6 +1,9 @@ package serializer -import "github.com/HFO4/cloudreve/models" +import ( + "fmt" + "github.com/HFO4/cloudreve/models" +) // CheckLogin 检查登录 func CheckLogin() Response { @@ -12,23 +15,28 @@ func CheckLogin() Response { // 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"` + 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"` + PreferredTheme string `json:"preferred_theme"` + Policy struct { + } `json:"policy"` } // BuildUser 序列化用户 func BuildUser(user model.User) User { + fmt.Println(user) return User{ - ID: user.ID, - Email: user.Email, - Nickname: user.Nick, - Status: user.Status, - Avatar: user.Avatar, - CreatedAt: user.CreatedAt.Unix(), + ID: user.ID, + Email: user.Email, + Nickname: user.Nick, + Status: user.Status, + Avatar: user.Avatar, + CreatedAt: user.CreatedAt.Unix(), + PreferredTheme: user.OptionsSerialized.PreferredTheme, } } diff --git a/routers/controllers/site.go b/routers/controllers/site.go index 8d1fa23..98e8bd8 100644 --- a/routers/controllers/site.go +++ b/routers/controllers/site.go @@ -23,7 +23,14 @@ func SiteConfig(c *gin.Context) { "defaultTheme", }) - c.JSON(200, serializer.BuildSiteConfig(siteConfig)) + // 如果已登录,则同时返回用户信息 + user, _ := c.Get("user") + if user, ok := user.(*model.User); ok { + c.JSON(200, serializer.BuildSiteConfig(siteConfig, user)) + return + } + + c.JSON(200, serializer.BuildSiteConfig(siteConfig, nil)) } // Ping 状态检查页面