52 lines
990 B
Go
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
|
|
}
|