Fournisseur de données Feathers pour React-Admin
La solution idéale pour créer une administration Backend et Frontend, basée sur les services REST. Pour utiliser Feathers avec React-Admin.
Si vous recherchez admin-on-rest (ancienne version de React-Admin), veuillez utiliser la version 1.0.0.
ra-data-feathers prend actuellement en charge les types de requêtes suivants. Plus d'informations sur les types de requêtes React-Admin sont disponibles pour les fournisseurs de données et les fournisseurs d'authentification dans la documentation React-Admin.
Dans votre application React-Admin, ajoutez simplement la dépendance ra-data-feathers :
npm install ra-data-feathers --save
restClient
et authClient
dépendent d'une instance client Feathers configurée.
La configuration du client Feathers dépasse la portée de ce document. Consultez la documentation Feathers pour plus d'informations sur la configuration du client Feathers. Les deux éléments suivants doivent être configurés dans le client Feathers pour être utilisés avec ra-data-feathers.
Le fournisseur de données ra-data-feathers (restClient) accepte deux arguments : client
et options
.
client
doit être une instance client Feathers configurée. Cet argument est nécessaire.
options
contient des options configurables pour le restClient ra-data-feathers. L'argument options
est facultatif et peut être omis. Dans ce cas, les valeurs par défaut seront utilisées.
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
peuvent être utilisées en activant plusieurs options dans l'application Plumes.
authClient
accepte également deux paramètres. client
et options
.
client
doit être une instance client Feathers configurée. Cet argument est nécessaire.
options
contient des options configurables pour l'authClient ra-data-feathers. L'argument options
est facultatif et peut être omis. Dans ce cas, les valeurs par défaut indiquées ci-dessous seront utilisées.
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 peut être utilisé en transmettant restClient
et authClient
au composant react-admin <Admin>
en tant que paramètres dataProvider
et authProvider
respectivement :
< Admin
dataProvider = { restClient ( feathersClient , restClientConfig ) }
authProvider = { authClient ( feathersClient , authClientConfig ) }
/>
Cet exemple suppose ce qui suit :
./feathersClient
userroles
AResource
et AnotherResource
sont disponibles dans ./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 >
) ;
Remarque : la restriction d'autorisations ci-dessus affecte uniquement si une ressource donnée est visible ou non et n'empêchera pas les utilisateurs d'accéder directement à votre API. Dans la plupart des projets, cette option serait utilisée avec des hooks de restriction utilisateur/rôle côté serveur, tels que les hooks d'authentification Feathers.
Vous pouvez trouver un exemple complet sur https://github.com/kfern/feathers-aor-test-integration
Les tests du module ra-data-feathers sont disponibles depuis le répertoire racine du module avec :
npm run test
Ce logiciel est sous licence MIT et sponsorisé par Cambá.
Merci à ces personnes merveilleuses (clé emoji) :
José Luis Di Biase | Nicolas Nelson | FC | Amr Noman | Lijo Antoine | Tony Kerz | Dmitri Maganov |
Rêve | Wedney Yuri | Igor Berlenko | Tomasz Bak | Dan Stevens | Daniel Prentis | Facundo Mainere |
Fernando Navarro | LoMing | Mohammed Faizuddin | Ryan Harmuth | Santiago Botta | Taylor Goodall | Alexandre Friedl |
Fabio Toi | jvke | nhkhanh |
Ce projet suit la spécification de tous les contributeurs. Les contributions de toute nature sont les bienvenues !