package auth

import (
	"github.com/gin-gonic/gin"
	"github.com/tidbcloud/account/idl/pbgen/proto/account"

	"github.com/tidbcloud/tidb-management-service/tidb-mgmt-portal/domain/entity"
	"github.com/tidbcloud/tidb-management-service/tidb-mgmt-portal/pkg/consts"
)

type fakeAuthService struct{}

func newFakeAuthService() Service {
	return &fakeAuthService{}
}

func (m *fakeAuthService) RemoveApiKeyHeader() gin.HandlerFunc {
	return func(c *gin.Context) {
		c.Next()
	}
}

func (m *fakeAuthService) TransformAuthnCtx(ctx *gin.Context) {
	// ctx.Request.Header.Set(GrpcGatewayOrgIDKey, "100")
	// ctx.Request.Header.Set(GrpcGatewayUserIDKey, "200")
	// ctx.Request.Header.Set(GrpcGatewayDefaultProjectIDKey, "300")
	// ctx.Request.Header.Set(GrpcGatewayUserEmailKey, "test@pingcap.com")
	// ctx.Request.Header.Set(GrpcGatewayPublicKeyKey, "test-public-key")
	// ctx.Request.Header.Set(GrpcGatewayProjectIDListKey, "300,400")
	user := &entity.User{
		Org: &account.Org{
			Id: 100,
		},
		User: &account.User{
			Id:    10,
			Email: "test@pingcap.com",
		},
		PublicKey: "test-public-key",
		Projects: []*account.Project{
			{
				Id: 200,
			},
			{
				Id: 400,
			},
		},
	}

	ctx.Set(consts.XAuthUser, user)
}

func (m *fakeAuthService) CheckUserAndPermission() gin.HandlerFunc {
	return func(ctx *gin.Context) {}
}
