fleet/frontend/redux
noahtalerman 8e37b8938c
Implement osquery options page (#11)
Created 3 new components: <OsqueryOptionsPage /> , <OsqueryOptionsForm />, and <YamlAce />

The <OsqueryOptionsPage /> component is rendered at the new route /admin/osquery. The user navigates to this route by selecting the "Osquery Options" sub-navigation in the admin dropdown menu.

On the Osquery Options page, the user is presented with a ACE editor filled with the current osquery options. The current osquery options are retrieved from the serve when the page component mounts. These current osquery options are stored in the osquery slice of state.

Clicking "UPDATE OPTIONS" will trigger a form submit and hit the v1/kolide/spec/osquery_options endpoint if the yaml is valid. If the yaml is not valid, an error message is presented to the user with details on what the error is and where it occurred. If the yaml is valid, the osquery options will be updated even if the options haven't change.
2020-11-04 18:00:51 -08:00
..
middlewares Replace uses of the term "Kolide" with "Fleet" (#1999) 2019-01-24 09:39:32 -08:00
nodes Implement osquery options page (#11) 2020-11-04 18:00:51 -08:00
utilities Cleaning JavaScript imports and if statements (#327) 2016-10-19 16:22:18 -04:00
README.md Replace uses of the term "Kolide" with "Fleet" (#1999) 2019-01-24 09:39:32 -08:00
reducers.js Implement osquery options page (#11) 2020-11-04 18:00:51 -08:00
store.js removing license code (#1551) 2017-09-01 10:42:46 -06:00

Fleet Redux Implementation

Fleet uses Redux for application state management. React components themselves can manage state, but Redux makes it easy to share state throughout the app by being the single source of truth (such as keeping track of the entities returned by the API).

To learn more about Redux visit http://redux.js.org.

Redux State Structure

Overview

The shape of the application's Redux state is as follows:

{
  app: {
    ...
  },
  auth: {
    ...
  },
  components: {
    ...
  },
  entities: {
    ...
  },
  loadingBar: {
    ...
  },
  notifications: {
    ...
  },
  persistentFlash: {
    ...
  },
  redirectLocation: {
    ...
  },
  routing: {
    ...
  },
}

App State

App state contains information about the general app setup and information. It contains a config object with data on the user's organization and Fleet setup. Additionally, the app state in Redux controls rendering the side navigation as a mobile view, and displaying the Kolide jagged background image located on specific pages such as the login page.

Auth State

Auth state contains data on the current user.

Component State

Component state contains data specific to React components.

Entities State

The entities state holds data on specific entities such as users, queries, packs, etc. They follow a similar configuration that can be found here.

Notifications State

The notifications state contains data that informs the rendering of flash messages.

Redirect Location State

The redirect location state contains information about where to redirect a user after login, specifically when they attempt to access an authenticated route when logged out and then log in.