Proveedor de datos de plumas para reaccionar-admin
La combinación perfecta para construir Backend y Frontend Admin, basado en servicios REST. Para usar Feathers con reaccionar-admin.
Si está buscando admin-on-rest (versión anterior de reaccionar-admin), utilice la versión 1.0.0
ra-data-feathers actualmente admite los siguientes tipos de solicitudes. Hay más información disponible sobre los tipos de solicitudes de reacción-admin para proveedores de datos y proveedores de autenticación en la documentación de reacción-admin.
En su aplicación reaccionar-admin simplemente agregue la dependencia ra-data-feathers:
npm install ra-data-feathers --save
Tanto restClient
como authClient
dependen de una instancia de cliente Feathers configurada.
La configuración del cliente Feathers está fuera del alcance de este documento. Consulte la documentación de Feathers para obtener más información sobre cómo configurar el cliente Feathers. Es necesario configurar los dos siguientes en el cliente Feathers para usarlos con ra-data-feathers.
El proveedor de datos ra-data-feathers (restClient) acepta dos argumentos: client
y options
.
client
debe ser una instancia de cliente Feathers configurada. Este argumento es necesario.
options
contiene opciones configurables para ra-data-feathers restClient. El argumento options
es opcional y se puede omitir. En este caso, se utilizarán los valores predeterminados.
const options = {
id : 'id' , // If your database uses an id field other than 'id'. Optional.
usePatch : false , // Use PATCH instead of PUT for UPDATE requests. Optional.
my_resource : { // Options for individual resources can be set by adding an object with the same name. Optional.
id : 'id' , // If this specific table uses an id field other than 'id'. Optional.
} ,
/* Allows to use custom query operators from various feathers-database-adapters in GET_MANY calls.
* Will be merged with the default query operators ['$gt', '$gte', '$lt', '$lte', '$ne', '$sort', '$or', '$nin', '$in']
*/
customQueryOperators : [ ]
}
Performant Bulk Actions
se pueden utilizar habilitando múltiples opciones en la aplicación de plumas.
authClient
también acepta dos parámetros. client
y options
.
client
debe ser una instancia de cliente Feathers configurada. Este argumento es necesario.
options
contiene opciones configurables para ra-data-feathers authClient. El argumento options
es opcional y se puede omitir. En este caso, se utilizarán los valores predeterminados que se muestran a continuación.
const options = {
storageKey : 'feathers-jwt' , // The key in localStorage used to store the authentication token
authenticate : { // Options included in calls to Feathers client.authenticate
strategy : 'local' , // The authentication strategy Feathers should use
} ,
permissionsKey : 'permissions' , // The key in localStorage used to store permissions from decoded JWT
permissionsField : 'roles' , // The key in the decoded JWT containing the user's role
passwordField : 'password' , // The key used to provide the password to Feathers client.authenticate
usernameField : 'email' , // The key used to provide the username to Feathers client.authenticate
redirectTo : '/login' , // Redirect to this path if an AUTH_CHECK fails. Uses the react-admin default of '/login' if omitted.
logoutOnForbidden : true , // Logout when response status code is 403
}
<Admin>
ra-data-feathers se puede usar pasando restClient
y authClient
al componente react-admin <Admin>
como los parámetros dataProvider
y authProvider
respectivamente:
< Admin
dataProvider = { restClient ( feathersClient , restClientConfig ) }
authProvider = { authClient ( feathersClient , authClientConfig ) }
/>
Este ejemplo supone lo siguiente:
./feathersClient
userroles
AResource
y AnotherResource
están disponibles en ./resources
import { Admin , Resource } from 'react-admin' ;
import feathersClient from './feathersClient' ;
import { AResourceList } from './resources/AResource/List' ;
import { AnotherResourceList } from './resources/AnotherResourceList' ;
import { restClient , authClient } from 'ra-data-feathers' ;
const restClientOptions = {
id : '_id' , // In this example, the database uses '_id' rather than 'id'
usePatch : true // Use PATCH instead of PUT for updates
} ;
const authClientOptions = {
usernameField : 'username' , // Our example database might use 'username' rather than 'email'
permissionsField : 'userroles' , // Use the 'userroles' field on the JWT as the users role
redirectTo : '/signin' , // Our example login form might be at '/signin', redirect here if AUTH_CHECK fails
}
const App = ( ) => (
< Admin
title = 'ra-data-feathers Example'
dataProvider = { restClient ( feathersClient , restClientOptions ) }
authProvider = { authClient ( feathersClient , authClientOptions ) }
>
{ permissions => [
< Resource
name = 'a_resource'
list = { AResourceList }
/>
permissions === 'admin' ? // Only show this resource if the user role is 'admin'
< Resource
name = 'another_resource'
list = { AnotherResourceList }
/> : null ;
] }
</ Admin >
) ;
Nota: la restricción de permisos anterior solo afecta si un recurso determinado es visible o no, y no impedirá que los usuarios accedan a su API directamente. En la mayoría de los proyectos, esta opción se usaría con ganchos de restricción de usuario/rol en el lado del servidor, como ganchos de autenticación de plumas.
Puedes encontrar un ejemplo completo en https://github.com/kfern/feathers-aor-test-integration
Las pruebas para el módulo ra-data-feathers están disponibles en el directorio raíz del módulo con:
npm run test
Este software está bajo la Licencia MIT y patrocinado por Cambá.
Gracias a estas maravillosas personas (tecla emoji):
José Luis Di Biase | nicolas nelson | FC | Amr Noman | Antonio Lijo | tony kerz | Dmitri Maganov |
Sueño | Wedney Yuri | Ígor Berlenko | Tomasz Bak | Daniel Stevens | Daniel Prentis | Facundo Mainere |
Fernando Navarro | loming | Mohamed Faizuddin | ryan harmuth | Santiago Botta | Taylor Goodall | Alejandro Friedl |
Fábio Toi | jvke | nhkhanh |
Este proyecto sigue la especificación de todos los contribuyentes. ¡Se aceptan aportes de cualquier tipo!