package apiserver

import (
	"errors"

	"github.com/gin-gonic/gin"
	"github.com/tidbcloud/internal-portal/core-portal/auth"
	"github.com/tidbcloud/pkgv2/auth/auth0"
)

// GetUserFromContext gets the tenant.User from context if exists.
func GetUserFromContext(c *gin.Context) (*auth.User, error) {
	claimsIFace, ok := c.Get(string(auth0.AuthTokenClaimKey))
	if claimsIFace == nil || !ok {
		return nil, errors.New("user not in context")
	}
	user, ok := claimsIFace.(*auth.User)
	if !ok {
		return nil, errors.New("expect type tenant.User in context")
	}
	return user, nil
}
