Provedor de dados Feathers para react-admin
A combinação perfeita para construir Backend e Frontend Admin, baseado em serviços REST. Para usar Feathers com react-admin.
Se você estiver procurando por admin-on-rest (versão mais antiga do react-admin), use a versão 1.0.0
ra-data-feathers atualmente suporta os seguintes tipos de solicitação. Mais informações sobre os tipos de solicitação react-admin estão disponíveis para provedores de dados e provedores de autenticação na documentação do react-admin.
Em seu aplicativo react-admin, basta adicionar a dependência ra-data-feathers:
npm install ra-data-feathers --save
restClient
e authClient
dependem de uma instância do cliente Feathers configurada.
A configuração do cliente Feathers está além do escopo deste documento. Consulte a documentação do Feathers para obter mais informações sobre como configurar o cliente Feathers. Ambos os itens a seguir precisam ser configurados no cliente Feathers para uso com ra-data-feathers.
O provedor de dados ra-data-feathers (restClient) aceita dois argumentos: client
e options
.
client
deve ser uma instância de cliente Feathers configurada. Este argumento é obrigatório.
options
contém opções configuráveis para ra-data-feathers restClient. O argumento options
é opcional e pode ser omitido. Neste caso, os padrões serão usados.
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
podem ser usadas ativando várias opções no aplicativo Feathers
authClient
também aceita dois parâmetros. client
e options
.
client
deve ser uma instância de cliente Feathers configurada. Este argumento é obrigatório.
options
contém opções configuráveis para o authClient ra-data-feathers. O argumento options
é opcional e pode ser omitido. Neste caso, serão utilizados os padrões mostrados abaixo.
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 pode ser usado passando restClient
e authClient
para o componente react-admin <Admin>
como os parâmetros dataProvider
e authProvider
respectivamente:
< Admin
dataProvider = { restClient ( feathersClient , restClientConfig ) }
authProvider = { authClient ( feathersClient , authClientConfig ) }
/>
Este exemplo pressupõe o seguinte:
./feathersClient
userroles
AResource
e AnotherResource
estão disponíveis em ./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 >
) ;
Observação: a restrição de permissões acima afeta apenas se um determinado recurso está visível ou não e não impedirá que os usuários acessem sua API diretamente. Na maioria dos projetos, esta opção seria usada com ganchos de restrição de usuário/função no lado do servidor, como ganchos de autenticação de penas.
Você pode encontrar um exemplo completo em https://github.com/kfern/feathers-aor-test-integration
Os testes para o módulo ra-data-feathers estão disponíveis no diretório raiz do módulo com:
npm run test
Este software é licenciado sob a licença MIT e patrocinado pela Cambá.
Os agradecimentos vão para essas pessoas maravilhosas (chave emoji):
José Luis Di Biase | Nicolau Nelson | FC | Amr Noman | Lijo Antônio | Tony Kerz | Dmitrii Maganov |
Sonhar | Wedney Yuri | Igor Berlenko | Tomasz Bak | Dan Stevens | Daniel Prentis | Facundo Mainere |
Fernando Navarro | Lo Ming | Mohammed Faizuddin | Ryan Harmuth | Santiago Botta | Taylor Goodall | Alexandre Friedl |
Fábio Toi | jvke | nhkhanh |
Este projeto segue a especificação de todos os contribuidores. Contribuições de qualquer tipo são bem-vindas!