package debugportal

import (
	"context"
	"strings"

	"github.com/gogo/protobuf/types"
	"github.com/pingcap/dbaas/pkg/auth/debug"
	"github.com/tidbcloud/idl/pbgen/proto/central"
)

func (service *debugPortalService) GetBasicSession(context context.Context, _ *types.Empty) (*central.DebugPortalGetBasicSessionResp, error) {
	session, err := service.sessionManager.GrpcGetDebugSessionUser(context)
	if err != nil {
		return nil, err
	}
	return &central.DebugPortalGetBasicSessionResp{
		Email:     session.Email,
		Username:  session.Username,
		CsrfToken: session.CSRFToken,
	}, nil
}

func (service *debugPortalService) SignOut(context context.Context, req *central.DebugPortalSignOutReq) (*central.DebugPortalSignOutResp, error) {
	_, err := service.sessionManager.GrpcGetDebugSessionUser(context)
	if err != nil {
		return nil, err
	}
	if req.SessionKeyAsCookie {
		_ = debug.GrpcClearCookie(context)
	}
	return &central.DebugPortalSignOutResp{
		OauthSignOutUri: strings.ReplaceAll(service.config.SignOutURL, "{baseURL}", req.RedirectUri),
	}, nil
}

// for debug usage
func (service *debugPortalService) authN(ctx context.Context) error {
	if service.config.DisableAuthN {
		return nil
	}
	_, err := service.sessionManager.GrpcGetDebugSessionUser(ctx)
	return err
}
