Feathers-Datenanbieter für React-Admin
Die perfekte Ergänzung zum Aufbau von Backend- und Frontend-Administratoren, basierend auf REST-Diensten. Zur Verwendung von Feathers mit React-Admin.
Wenn Sie nach „admin-on-rest“ (ältere React-Admin-Version) suchen, verwenden Sie bitte die Version 1.0.0
ra-data-feathers unterstützt derzeit die folgenden Anfragetypen. Weitere Informationen zu React-Admin-Anforderungstypen finden Sie für Datenanbieter und Authentifizierungsanbieter in der React-Admin-Dokumentation.
Fügen Sie in Ihrer React-Admin-App einfach die Abhängigkeit „ra-data-feathers“ hinzu:
npm install ra-data-feathers --save
Sowohl restClient
als auch authClient
hängen von einer konfigurierten Feathers-Client-Instanz ab.
Die Konfiguration des Feathers-Clients geht über den Rahmen dieses Dokuments hinaus. Weitere Informationen zum Konfigurieren des Feathers-Clients finden Sie in der Feathers-Dokumentation. Beide der folgenden Elemente müssen im Feathers-Client für die Verwendung mit ra-data-feathers konfiguriert werden.
Der ra-data-feathers-Datenanbieter (restClient) akzeptiert zwei Argumente: client
und options
.
client
sollte eine konfigurierte Feathers-Client-Instanz sein. Dieses Argument ist erforderlich.
options
enthält konfigurierbare Optionen für den ra-data-feathers restClient. Das options
ist optional und kann weggelassen werden. In diesem Fall werden Standardwerte verwendet.
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
können verwendet werden, indem mehrere Optionen in der Federanwendung aktiviert werden
authClient
akzeptiert auch zwei Parameter. client
und options
.
client
sollte eine konfigurierte Feathers-Client-Instanz sein. Dieses Argument ist erforderlich.
options
enthält konfigurierbare Optionen für den ra-data-feathers authClient. Das options
ist optional und kann weggelassen werden. In diesem Fall werden die unten aufgeführten Standardeinstellungen verwendet.
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>
-Komponente ra-data-feathers kann verwendet werden, indem restClient
und authClient
als dataProvider
bzw. authProvider
Parameter an die React-Admin- <Admin>
-Komponente übergeben werden:
< Admin
dataProvider = { restClient ( feathersClient , restClientConfig ) }
authProvider = { authClient ( feathersClient , authClientConfig ) }
/>
In diesem Beispiel wird Folgendes angenommen:
./feathersClient
verfügbaruserroles
AResource
und AnotherResource
sind in ./resources
verfügbar 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 >
) ;
Hinweis: Die oben genannte Berechtigungseinschränkung wirkt sich nur darauf aus, ob eine bestimmte Ressource sichtbar ist oder nicht, und hindert Benutzer nicht daran, direkt auf Ihre API zuzugreifen. In den meisten Projekten würde diese Option mit Benutzer-/Rolleneinschränkungs-Hooks auf der Serverseite verwendet werden, wie z. B. Feathers-Authentication-Hooks.
Ein vollständiges Beispiel finden Sie unter https://github.com/kfern/feathers-aor-test-integration
Tests für das Modul ra-data-feathers sind im Stammverzeichnis des Moduls verfügbar mit:
npm run test
Diese Software ist unter der MIT-Lizenz lizenziert und wird von Cambá gesponsert.
Der Dank geht an diese wunderbaren Menschen (Emoji-Taste):
José Luis Di Biase | Nicholas Nelson | FC | Amr Noman | Lijo Antony | Tony Kerz | Dmitrii Maganow |
Traum | Wédney Yuri | Igor Berlenko | Tomasz Bak | Dan Stevens | Daniel Prentis | Facundo Mainere |
Fernando Navarro | LoMing | Mohammed Faizuddin | Ryan Harmuth | Santiago Botta | Taylor Goodall | Alexander Friedl |
Fábio Toi | jvke | nhkhanh |
Dieses Projekt folgt der All-Contributors-Spezifikation. Beiträge jeglicher Art willkommen!