

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejemplo 5: filtrado de la interfaz de usuario con permisos verificados y Cedar
<a name="avp-ui-filtering-examples"></a>

También puedes usar los permisos verificados para implementar el filtrado RBAC de los elementos de la interfaz de usuario en función de las acciones autorizadas. Esto es extremadamente valioso para las aplicaciones que tienen elementos de interfaz de usuario sensibles al contexto que podrían estar asociados a usuarios o inquilinos específicos en el caso de una aplicación SaaS multiusuario.

En el siguiente ejemplo, `Users` no `Role` `viewer` están autorizados a realizar actualizaciones. Para estos usuarios, la interfaz de usuario no debería mostrar ningún botón de actualización.

![Ejemplo de filtrado de interfaz de usuario con Amazon Verified Permissions y Cedar](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/saas-multitenant-api-access-authorization/images/avp-example-5.png)


En este ejemplo, una aplicación web de una sola página tiene cuatro botones. Los botones que están visibles dependen `Role` del usuario que esté actualmente conectado a la aplicación. A medida que la aplicación web de una sola página renderiza la interfaz de usuario, consulta los permisos verificados para determinar qué acciones está autorizado a realizar el usuario y, a continuación, genera los botones en función de la decisión de autorización.

La siguiente política especifica que el tipo `Role` con un valor de `viewer` puede ver tanto los usuarios como los datos. La decisión de `ALLOW` autorizar esta política requiere una `viewUsers` acción `viewData` o, además, requiere que se asocie un recurso al tipo `Data` o`Users`. Una `ALLOW` decisión permite a la interfaz de usuario representar dos botones: `viewDataButton` y`viewUsersButton`.

```
permit (
    principal in GuiAPP::Role::"viewer",
    action in [GuiAPP::Action::"viewData", GuiAPP::Action::"viewUsers"],
    resource 
)
when {
   resource in [GuiAPP::Type::"Data", GuiAPP::Type::"Users"]
};
```

La siguiente política especifica que el tipo `Role` con un valor de solo `viewerDataOnly` puede ver datos. La decisión de `ALLOW` autorizar esta política requiere una `viewData` acción y también requiere que se asocie un recurso al tipo`Data`. Una `ALLOW` decisión permite que la interfaz de usuario renderice el botón`viewDataButton`.

```
permit (
    principal in GuiApp::Role::"viewerDataOnly",
    action in [GuiApp::Action::"viewData"],
    resource in [GuiApp::Type::"Data"] 
);
```

La siguiente política especifica que el tipo `Role` con un valor de `admin` puede editar y ver datos y usuarios. La decisión de `ALLOW` autorizar esta política requiere una acción de `updateData``updateUsers`, `viewData,` o`viewUsers`, y también requiere que se asocie un recurso al tipo `Data` o`Users`. Una `ALLOW` decisión permite a la interfaz de usuario representar los cuatro botones: `updateDataButton``updateUsersButton`,`viewDataButton`, y`viewUsersButton`.

```
permit (
    principal in GuiApp::Role::"admin",
    action in [
        GuiApp::Action::"updateData",
        GuiApp::Action::"updateUsers",
        GuiApp::Action::"viewData", 
        GuiApp::Action::"viewUsers"
       ],
    resource 
)
when {
   resource in [GuiApp::Type::"Data", GuiApp::Type::"Users"]
};
```