Поставщик данных Feathers для реагирования-администратора
Идеально подходит для создания Backend и Frontend Admin на основе сервисов REST. За использование Feathers с React-admin.
Если вы ищете admin-on-rest (более старая версия реакции-администратора), используйте версию 1.0.0.
ra-data-feathers в настоящее время поддерживает следующие типы запросов. Дополнительная информация о типах запросов реагирования-администратора доступна для поставщиков данных и поставщиков аутентификации в документации по реагированию-администратору.
В вашем приложении React-admin просто добавьте зависимость ra-data-feathers:
npm install ra-data-feathers --save
И restClient
, и authClient
зависят от настроенного экземпляра клиента Feathers.
Настройка клиента Feathers выходит за рамки этого документа. Дополнительную информацию о настройке клиента Feathers см. в документации Feathers. Оба следующих параметра необходимо настроить в клиенте Feathers для использования с ra-data-feathers.
Поставщик данных ra-data-feathers (restClient) принимает два аргумента: client
и options
.
client
должен быть настроенным экземпляром клиента Feathers. Этот аргумент является обязательным.
options
содержит настраиваемые параметры для restClient ra-data-feathers. Аргумент options
является необязательным и может быть опущен. В этом случае будут использоваться значения по умолчанию.
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
, включив несколько опций в приложении перьев.
authClient
также принимает два параметра. client
и options
.
client
должен быть настроенным экземпляром клиента Feathers. Этот аргумент является обязательным.
options
содержит настраиваемые параметры для authClient ra-data-feathers. Аргумент options
является необязательным и может быть опущен. В этом случае будут использоваться значения по умолчанию, показанные ниже.
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 можно использовать, передав restClient
и authClient
компоненту реакции-администратора <Admin>
в качестве параметров dataProvider
и authProvider
соответственно:
< Admin
dataProvider = { restClient ( feathersClient , restClientConfig ) }
authProvider = { authClient ( feathersClient , authClientConfig ) }
/>
В этом примере предполагается следующее:
./feathersClient
userroles
AResource
и AnotherResource
доступны в ./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 >
) ;
Примечание. Ограничение разрешений, указанное выше, влияет только на то, является ли данный ресурс видимым или нет, и не препятствует пользователям напрямую обращаться к вашему API. В большинстве проектов эта опция будет использоваться с перехватчиками ограничения пользователей/ролей на стороне сервера, такими как перехватчики аутентификации перьев.
Вы можете найти полный пример в https://github.com/kfern/feathers-aor-test-integration.
Тесты для модуля ra-data-feathers доступны из корневого каталога модуля с помощью:
npm run test
Это программное обеспечение распространяется по лицензии MIT и спонсируется компанией Cambá.
Спасибо этим замечательным людям (ключ смайлика):
Хосе Луис Ди Биасе | Николас Нельсон | ФК | Амр Номан | Лиджо Энтони | Тони Керц | Дмитрий Маганов |
Мечтать | Ведни Юрий | Игорь Берленко | Томаш Бак | Дэн Стивенс | Дэниел Прентис | Факундо Майнере |
Фернандо Наварро | Ломин | Мохаммед Файзуддин | Райан Хармут | Сантьяго Ботта | Тейлор Гудолл | Александр Фридл |
Фабио Той | jvke | нхкхан |
Этот проект соответствует спецификации всех участников. Любой вклад приветствуется!