You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: user.go
    path of file: ./repos/rancher/pkg/controllers/management/auth
    
    the code of the file until where you have to start completion: package auth

import (
	"fmt"
	"strings"

	v32 "github.com/rancher/rancher/pkg/apis/management.cattle.io/v3"
	"github.com/rancher/rancher/pkg/controllers"

	"github.com/rancher/rancher/pkg/clustermanager"
	wranglerv3 "github.com/rancher/rancher/pkg/generated/controllers/management.cattle.io/v3"
	v1 "github.com/rancher/rancher/pkg/generated/norma
    
func (l *userLifecycle) deleteAllGRB(grbs []*v3.GlobalRoleBinding) error {
	// some GRBs can refer to GRs which inherit cluster Roles. Rancher's service account lacks the permission
	// to delete these GRBs directly, so it needs to bypass the webhook
	grbClient, err := l.grb.WithImpersonation(controllers.WebhookImpersonation())
	if err != nil {
		return fmt.Errorf("error when impersonating webhook to delete globalRoleBindings: %w", err)
	}
	for _, grb := range grbs {
		logrus.Infof("[%v] Deleting globalRoleBinding %v for user %v", userController, grb.Name, grb.UserName)
		err = grbClient.Delete(grb.Name, &metav1.DeleteOptions{})
		if err != nil {
			return fmt.Errorf("error deleting globalRoleBinding %v: %v", grb.Name, err)

		}
	}

	return nil
}