From f8b6c1b1df62852f16ef88799f5f128a60167eee Mon Sep 17 00:00:00 2001 From: Asai Neko Date: Thu, 25 Dec 2025 02:50:27 +0800 Subject: [PATCH] Add user info service Signed-off-by: Asai Neko --- data/user.go | 2 +- server/router.go | 2 ++ service/info/userinfo.go | 1 - service/{info => user}/handler.go | 3 ++- service/user/userinfo.go | 40 +++++++++++++++++++++++++++++++ 5 files changed, 45 insertions(+), 3 deletions(-) delete mode 100644 service/info/userinfo.go rename service/{info => user}/handler.go (77%) create mode 100644 service/user/userinfo.go diff --git a/data/user.go b/data/user.go index 13af4ba..1e6ecdc 100644 --- a/data/user.go +++ b/data/user.go @@ -25,7 +25,7 @@ func (self *User) GetByEmail(email string) error { return nil } -func (self *User) GetByUserId(userId string) error { +func (self *User) GetByUserId(userId uuid.UUID) error { if err := Database.Where("user_id = ?", userId).First(&self).Error; err != nil { return err } diff --git a/server/router.go b/server/router.go index 0a9b3ad..5e64e2c 100644 --- a/server/router.go +++ b/server/router.go @@ -3,6 +3,7 @@ package server import ( "nixcn-cms/service/auth" "nixcn-cms/service/checkin" + "nixcn-cms/service/user" "github.com/gin-gonic/gin" ) @@ -12,4 +13,5 @@ func Router(e *gin.Engine) { api := e.Group("/api/v1") auth.Handler(api.Group("/auth")) checkin.Handler(api.Group("/checkin")) + user.Handler(api.Group("/user")) } diff --git a/service/info/userinfo.go b/service/info/userinfo.go deleted file mode 100644 index e612023..0000000 --- a/service/info/userinfo.go +++ /dev/null @@ -1 +0,0 @@ -package info diff --git a/service/info/handler.go b/service/user/handler.go similarity index 77% rename from service/info/handler.go rename to service/user/handler.go index 82dbcc9..a315d98 100644 --- a/service/info/handler.go +++ b/service/user/handler.go @@ -1,4 +1,4 @@ -package info +package user import ( "nixcn-cms/internal/crypto/jwt" @@ -8,4 +8,5 @@ import ( func Handler(r *gin.RouterGroup) { r.Use(jwt.JWTAuth()) + r.GET("/info", UserInfo) } diff --git a/service/user/userinfo.go b/service/user/userinfo.go new file mode 100644 index 0000000..e5ef147 --- /dev/null +++ b/service/user/userinfo.go @@ -0,0 +1,40 @@ +package user + +import ( + "net/http" + "nixcn-cms/data" + + "github.com/gin-gonic/gin" + "github.com/google/uuid" +) + +func UserInfo(c *gin.Context) { + data := new(data.User) + userId, ok := c.Get("user_id") + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{ + "status": "user not found", + }) + return + } + err := data.GetByUserId(userId.(uuid.UUID)) + if err != nil { + c.JSON(http.StatusUnauthorized, gin.H{ + "status": "user not found", + }) + return + } + var checkinTime any = nil + if !data.Checkin.IsZero() { + checkinTime = data.Checkin + } + c.JSON(http.StatusOK, gin.H{ + "user_id": data.UserId, + "email": data.Email, + "type": data.Type, + "nickname": data.Nickname, + "subtitle": data.Subtitle, + "avatar": data.Avatar, + "checkin": checkinTime, + }) +}