Permisos para espacios de trabajo

Seleccione el permiso

¿Qué datos del espacio de trabajo puede leer un usuario registrado de Slack?

  • Cualquier persona que sea miembro de un espacio de trabajo debe poder leer los datos sobre su espacio de trabajo.

Esta es una expresión booleana típica que dice que el que está tratando de acceder a un registro en la tabla del espacio de trabajo debe ser el propietario owner_id = X-Hasura-User-Id o debe ser parte del mismo espacio de trabajo workspace_members.user_id = X-Hasura-User-Id

Selección del nivel de fila

La expresión booleana válida de la declaración anterior se parece a esto:

{
"_or": [
{
"owner_id": {
"_eq": "X-Hasura-User-Id"
}
},
{
"workspace_members": {
"user_id": {
"_eq": "X-Hasura-User-Id"
}
}
}
]
}

Selección del nivel de columna

Después de filtrar las filas a las que un usuario debería acceder, necesitamos filtrar qué campos se les permite leer. Como no hay datos sensibles que se necesiten restringir solo a cierto tipo de usuario, damos permiso para seleccionar todas las columnas.

Terminamos con el acceso de lectura. Pasemos al acceso de escritura que permite a un usuario crear, actualizar o eliminar.

Permiso de inserción

¿Los usuarios de la aplicación pueden inscribirse directamente en la workspacetabla ?

Sí, cualquier usuario autenticado puede crear un espacio de trabajo por sí mismo. Se traduce en la siguiente expresión:

{
"owner_id": {
"_eq": "X-Hasura-User-Id"
}
}

Predeterminados de columna

Puede establecer valores estáticos o variables de sesión como valores predeterminados para la columna mientras se hace una inserción.

En la tabla del espacio de trabajo, owner_id debería configurarse automáticamente a la variable de sesión X-Hasura-User-Id y no debería permitirse que el usuario establezca este valor. Utilizamos preestablecidos de columna en este caso para lograr esto.

Inserción del usuario del espacio de trabajo de Slack

Permiso de actualización

¿Quién puede actualizar los datos existentes en la tabla workspace?

Solo se debería permitir que un usuario autenticado de la aplicación y el propietario del espacio de trabajo actualicen los datos en el espacio de trabajo.

Actualización del nivel de fila

La condición anterior se traduce en la siguiente expresión:

{
"owner_id": {
"_eq": "X-Hasura-User-Id"
}
}

Actualice la fila solo si owner_id de la columna coincide con el valor de ID del usuario autenticado (X-Hasura-User-Id)

Actualización del nivel de columna

Necesitamos establecer en qué columnas se le permite al usuario actualizar directamente desde la aplicación. Una simple lista de verificación sería NO permitir que el usuario actualice los valores id, owner_id y created_at. Se pueden permitir las columnas restantes.

Permiso de eliminación

El propietario del espacio de trabajo debería ser el único usuario que pueda eliminar el espacio de trabajo. Esto se traduce en la siguiente expresión:

{
"owner_id": {
"_eq": "X-Hasura-User-Id"
}
}

Tenga en cuenta que, en caso de que el espacio de trabajo se elimine, todos los registros dependientes en todas las demás tablas también deben eliminarse. Por lo tanto, el rol de administrador puede hacer esto como una única operación en el lado del servidor, en lugar de permitir la eliminación directa del espacio de trabajo del cliente. La otra opción es utilizar desencadenantes AL ELIMINAR para realizar una eliminación en cascada que eliminará todas las filas dependientes en la base de datos.

Did you find this page helpful?
Start with GraphQL on Hasura for Free
  • ArrowBuild apps and APIs 10x faster
  • ArrowBuilt-in authorization and caching
  • Arrow8x more performant than hand-rolled APIs
Promo
footer illustration
Brand logo
© 2024 Hasura Inc. All rights reserved
Github
Titter
Discord
Facebook
Instagram
Youtube
Linkedin