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 }