code: def has_access(
      permissions: Sequence[tuple[str, str]] | None = None
  ) -> Callable[[T], T]:
      """
      Check current user's permissions against required permissions.
  
      Deprecated. Do not use this decorator, use one of the decorator `has_access_*` defined in
      airflow/www/auth.py instead.
      This decorator will only work with FAB authentication and not with other auth providers.
  
      This decorator is widely used in user plugins, do not remove it. See
      https://github.com/apache/airflow/pull/33213#discussion_r1346287224
      """
      warnings.warn(
          "The 'has_access' decorator is deprecated. Please use one of the decorator `has_access_*`"
          "defined in airflow/www/auth.py instead.",
          RemovedInAirflow3Warning,
          stacklevel=2,
      )
      from airflow.providers.fab.auth_manager.decorators.auth import (
          _has_access_fab,
      )
  
      return _has_access_fab(permissions)
  
imports: from __future__ import annotations
  import functools
  import logging
  import warnings
  from functools import wraps
  from typing import TYPE_CHECKING, Callable, Sequence, TypeVar, cast
  from flask import flash, redirect, render_template, request, url_for
  from flask_appbuilder._compat import as_unicode
  from flask_appbuilder.const import FLAMSG_ERR_SEC_ACCESS_DENIED, LOGMSG_ERR_SEC_ACCESS_DENIED, PERMISSION_PREFIX
  from airflow.auth.managers.models.resource_details import AccessView, ConnectionDetails, DagAccessEntity, DagDetails, PoolDetails, VariableDetails
  from airflow.configuration import conf
  from airflow.exceptions import RemovedInAirflow3Warning
  from airflow.utils.net import get_hostname
  from airflow.www.extensions.init_auth_manager import get_auth_manager
label_desc: Use image node_id 2 for calling a global function with example usage: has_access(permissions) and returns: _has_access_fab