Files
qvyun/backend/app/http/users/controller.go
2025-01-10 16:54:33 +08:00

52 lines
990 B
Go

package users
import (
"backend/providers/jwt"
"github.com/gofiber/fiber/v3"
"github.com/jinzhu/copier"
log "github.com/sirupsen/logrus"
)
// @provider
type Controller struct {
svc *Service
log *log.Entry `inject:"false"`
}
func (c *Controller) Prepare() error {
c.log = log.WithField("module", "users.Controller")
return nil
}
// Show user info
//
// @Router /api/v1/users/info [get]
// @Bind claim local
func (c *Controller) Info(ctx fiber.Ctx, claim *jwt.Claims) (*UserInfo, error) {
userInfo := &UserInfo{}
user, err := c.svc.GetUserByID(ctx.Context(), claim.UserID)
if err != nil {
return nil, err
}
if err := copier.Copy(userInfo, user); err != nil {
return nil, err
}
userAuths, err := c.svc.GetUserOAuthChannels(ctx.Context(), claim.UserID)
if err != nil {
return nil, err
}
for _, auth := range userAuths {
userInfo.OAuths = append(userInfo.OAuths, OAuth{
Channel: auth.Channel,
ExpireAt: auth.ExpireAt,
})
}
return userInfo, nil
}