Então, o que acontece se você cometer um erro e expor seu aplicativo de administrador api_key ou apenas precisar alterar a api_key associada a um de seus aplicativos? Temos uma solução fácil que não exige que você altere nenhum de seus endpoints ou recrie um aplicativo, etc. Este artigo mostra como acessar todas as chaves de API de seu aplicativo via MySQL ou, se você não tiver começou a explorar o DreamFactory, o banco de dados SQLite padrão.
php artisan tinker
Psy Shell v0.8.17 (PHP 7.1.14 — cli) by Justin Hileman
>>>$string = gethostname() . 'admin' . time();
=> "WJG-MACBOOK.localadmin1521568591"
>>> $key = hash('sha256', $string);
=> "017229d1c2b5cf3e5add630d9f54d9f0861e5b07bef191735663e09fdf94fa34"
Com essa chave de API recém-criada, você pode modificá-la trabalhando com um ambiente de desenvolvimento SQL e alterar a chave.
Eu uso o MySQL Workbench , mas existem muitas alternativas. Conecte-se ao seu banco de dados e você poderá ver os aplicativos na sua instância DreamFactory. Você sempre pode usar o seguinte comando para vê-los:
Aqui está um link para algumas instruções SQL se você estiver procurando por outras opções para modificar tabelas ou dados.
Agora você pode atualizar o slot api_key usando este comando:
UPDATE app SET api_key = "1e4adbadb2664a948f1ce0f2490d4448bffb4eb11e3162f88a4da655ec9826d8" WHERE id = 1;
Instruções SQLite
O SQLite funciona de maneira muito semelhante e você pode acessar os prompts por meio de sua sessão de terminal. O problema é que não parece tão “bonito” quanto as ferramentas de desenvolvimento do MySQL, mas os dados são organizados da mesma maneira.
Dependendo de sua instalação, você precisa entrar no diretório de bancos de dados. Nessas imagens, criei uma instalação Github hospedada localmente. Meu caminho é: /Users/erikjacobsen/DF/dreamfactory/storage/databases
Para entrar no terminal:
➜ databases git:(83aecfe) ✗ sqlite3
Isso o levará ao prompt do sqlite para que possa acessar seu banco de dados.
SQLite version 3.16.0 2016-11-04 19:09:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>
Agora você pode obter acesso aos aplicativos e seus detalhes.
sqlite> .open df-test sqlite> select * from app; 1|admin|6498a8ad1beb9d84d63035c5d1120c007fad6de706734db9689f8996707e0f7d|An application for administering this instance.|1|3|dreamfactory/dist/index.html||||0|1|top||2018-03-04 07:12:45|2018-03-20 15:20:56||1 2|api_docs|36fda24fe5588fa4285ac6c6c2fdfbdb6b6bc9834699774c9bf777f706d05a88|An OpenAPI-based application allowing documentation viewing and testing of the API.|1|3|df-api-docs-ui/dist/index.html||||0|1|top||2018-03-04 07:12:45|2018-03-04 07:12:45|| 3|file_manager|b5cb82af7b5d4130f36149f90aa2746782e59a872ac70454ac188743cb55b0ba|An application for managing file services.|1|3|filemanager/index.html||||0|1|top||2018-03-04 07:12:45|2018-03-04 07:12:45|| 4|Address Book for React|91a8fdf7d133939a3a43b4940615bc3ff7432456b2309472152a394d613ab22c|An address book app for React showing user registration, user login, and CRUD.|1|1|add_reactjs/public/index.html|index.html|3|AddressBookForReact|0|1|top|1|2018-03-15 19:02:57|2018-03-15 19:03:35|1|1 sqlite>
Como eu disse um pouco bagunçado, mas as colunas são as mesmas como se você estivesse no MySQL. Use o mesmo conjunto de comandos que você usaria no exemplo SQL acima para atualizar e dos registros que você precisa. Você pode acessar todos os comandos CLI necessários para o SQLite aqui .
E agora você está pronto para correr novamente. Lembre-se de que, se precisar de ajuda, entre em contato conosco em dsp @support .com.