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 :
./feathersClientuserrolesAResource 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 !