This is an automated email from the ASF dual-hosted git repository.

jhtimmins pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 65ee91d  call resource based fab methods. (#16190)
65ee91d is described below

commit 65ee91d6e405977c497912a40ae7513b12452946
Author: James Timmins <[email protected]>
AuthorDate: Tue Jun 1 09:27:27 2021 -0700

    call resource based fab methods. (#16190)
---
 airflow/www/security.py | 52 ++++++++++++++++++++++++-------------------------
 1 file changed, 25 insertions(+), 27 deletions(-)

diff --git a/airflow/www/security.py b/airflow/www/security.py
index e8897ec..8547c00 100644
--- a/airflow/www/security.py
+++ b/airflow/www/security.py
@@ -139,6 +139,8 @@ class AirflowSecurityManager(SecurityManager, 
LoggingMixin):  # pylint: disable=
         (permissions.ACTION_CAN_ACCESS_MENU, 
permissions.RESOURCE_TASK_RESCHEDULE),
         (permissions.ACTION_CAN_READ, permissions.RESOURCE_PASSWORD),
         (permissions.ACTION_CAN_EDIT, permissions.RESOURCE_PASSWORD),
+        (permissions.ACTION_CAN_READ, permissions.RESOURCE_ROLE),
+        (permissions.ACTION_CAN_EDIT, permissions.RESOURCE_ROLE),
     ]
 
     # global view-menu for dag-level access
@@ -222,18 +224,16 @@ class AirflowSecurityManager(SecurityManager, 
LoggingMixin):  # pylint: disable=
             role = existing_roles.get(role_name) or self.add_role(role_name)
 
             for perm_name, view_name in perms:
-                perm_view = pvs.get((perm_name, view_name)) or 
self.add_permission_view_menu(
-                    perm_name, view_name
-                )
+                perm_view = pvs.get((perm_name, view_name)) or 
self.create_permission(perm_name, view_name)
 
                 if perm_view not in role.permissions:
-                    self.add_permission_role(role, perm_view)
+                    self.add_permission_to_role(role, perm_view)
 
     def add_permissions(self, role, perms):
         """Adds resource permissions to a given role."""
         for perm_name, view_name in perms:
-            perm_view = self.add_permission_view_menu(perm_name, view_name)
-            self.add_permission_role(role, perm_view)
+            perm_view = self.create_permission(perm_name, view_name)
+            self.add_permission_to_role(role, perm_view)
 
     def get_resource(self, name: str) -> ViewMenu:
         """
@@ -419,9 +419,9 @@ class AirflowSecurityManager(SecurityManager, 
LoggingMixin):  # pylint: disable=
         if not user:
             user = g.user
         dag_resource_name = permissions.resource_name_for_dag(dag_id)
-        return self._has_view_access(
+        return self._has_access(
             user, permissions.ACTION_CAN_READ, permissions.RESOURCE_DAG
-        ) or self._has_view_access(user, permissions.ACTION_CAN_READ, 
dag_resource_name)
+        ) or self._has_access(user, permissions.ACTION_CAN_READ, 
dag_resource_name)
 
     def can_edit_dag(self, dag_id, user=None) -> bool:
         """Determines whether a user has DAG edit access."""
@@ -429,9 +429,9 @@ class AirflowSecurityManager(SecurityManager, 
LoggingMixin):  # pylint: disable=
             user = g.user
         dag_resource_name = permissions.resource_name_for_dag(dag_id)
 
-        return self._has_view_access(
+        return self._has_access(
             user, permissions.ACTION_CAN_EDIT, permissions.RESOURCE_DAG
-        ) or self._has_view_access(user, permissions.ACTION_CAN_EDIT, 
dag_resource_name)
+        ) or self._has_access(user, permissions.ACTION_CAN_EDIT, 
dag_resource_name)
 
     def prefixed_dag_id(self, dag_id):
         """Returns the permission name for a DAG id."""
@@ -477,7 +477,7 @@ class AirflowSecurityManager(SecurityManager, 
LoggingMixin):  # pylint: disable=
         if user.is_anonymous:
             user.roles = self.get_user_roles(user)
 
-        has_access = self._has_view_access(user, permission, resource)
+        has_access = self._has_access(user, permission, resource)
         # FAB built-in view access method. Won't work for AllDag access.
 
         if self.is_dag_resource(resource):
@@ -569,8 +569,8 @@ class AirflowSecurityManager(SecurityManager, 
LoggingMixin):  # pylint: disable=
         :type view_menu_name: str
         :return:
         """
-        permission = self.find_permission(permission_name)
-        view_menu = self.find_view_menu(view_menu_name)
+        permission = self.get_action(permission_name)
+        view_menu = self.get_resource(view_menu_name)
         permission_view = None
         if permission and view_menu:
             permission_view = (
@@ -579,7 +579,7 @@ class AirflowSecurityManager(SecurityManager, 
LoggingMixin):  # pylint: disable=
                 .first()
             )
         if not permission_view and permission_name and view_menu_name:
-            self.add_permission_view_menu(permission_name, view_menu_name)
+            self.create_permission(permission_name, view_menu_name)
 
     def add_homepage_access_to_custom_roles(self):
         """
@@ -587,12 +587,10 @@ class AirflowSecurityManager(SecurityManager, 
LoggingMixin):  # pylint: disable=
 
         :return: None.
         """
-        website_permission = self.add_permission_view_menu(
-            permissions.ACTION_CAN_READ, permissions.RESOURCE_WEBSITE
-        )
+        website_permission = 
self.create_permission(permissions.ACTION_CAN_READ, 
permissions.RESOURCE_WEBSITE)
         custom_roles = [role for role in self.get_all_roles() if role.name not 
in EXISTING_ROLES]
         for role in custom_roles:
-            self.add_permission_role(role, website_permission)
+            self.add_permission_to_role(role, website_permission)
 
         self.get_session.commit()
 
@@ -745,8 +743,8 @@ class AirflowSecurityManager(SecurityManager, 
LoggingMixin):  # pylint: disable=
             return
 
         for action, resource in perms:
-            self.add_view_menu(resource)
-            self.add_permission_view_menu(action, resource)
+            self.create_resource(resource)
+            self.create_permission(action, resource)
 
     def sync_perm_for_dag(self, dag_id, access_control=None):
         """
@@ -763,7 +761,7 @@ class AirflowSecurityManager(SecurityManager, 
LoggingMixin):  # pylint: disable=
         """
         dag_resource_name = permissions.resource_name_for_dag(dag_id)
         for dag_perm in self.DAG_PERMS:
-            self.add_permission_view_menu(dag_perm, dag_resource_name)
+            self.create_permission(dag_perm, dag_resource_name)
 
         if access_control:
             self._sync_dag_view_permissions(dag_resource_name, access_control)
@@ -793,15 +791,15 @@ class AirflowSecurityManager(SecurityManager, 
LoggingMixin):  # pylint: disable=
         dag_resource_name = permissions.resource_name_for_dag(dag_id)
 
         def _get_or_create_dag_permission(perm_name):
-            dag_perm = self.find_permission_view_menu(perm_name, 
dag_resource_name)
+            dag_perm = self.get_permission(perm_name, dag_resource_name)
             if not dag_perm:
                 self.log.info("Creating new permission '%s' on view '%s'", 
perm_name, dag_resource_name)
-                dag_perm = self.add_permission_view_menu(perm_name, 
dag_resource_name)
+                dag_perm = self.create_permission(perm_name, dag_resource_name)
 
             return dag_perm
 
         def _revoke_stale_permissions(dag_view):
-            existing_dag_perms = self.find_permissions_view_menu(dag_view)
+            existing_dag_perms = self.get_resource_permissions(dag_view)
             for perm in existing_dag_perms:
                 non_admin_roles = [role for role in perm.role if role.name != 
'Admin']
                 for role in non_admin_roles:
@@ -813,9 +811,9 @@ class AirflowSecurityManager(SecurityManager, 
LoggingMixin):  # pylint: disable=
                             dag_resource_name,
                             role.name,
                         )
-                        self.del_permission_role(role, perm)
+                        self.remove_permission_from_role(role, perm)
 
-        dag_view = self.find_view_menu(dag_resource_name)
+        dag_view = self.get_resource(dag_resource_name)
         if dag_view:
             _revoke_stale_permissions(dag_view)
 
@@ -838,7 +836,7 @@ class AirflowSecurityManager(SecurityManager, 
LoggingMixin):  # pylint: disable=
 
             for perm_name in perms:
                 dag_perm = _get_or_create_dag_permission(perm_name)
-                self.add_permission_role(role, dag_perm)
+                self.add_permission_to_role(role, dag_perm)
 
     def create_resource(self, name: str) -> ViewMenu:
         """

Reply via email to