* added teams to add host modal dropdown
* bulk and transfer host on host page
* started transferhost API call
* hook up client side of api
* hook up client side of api call for enrol secrets
* added selection number and clear all selections button
* remove log and document
* fix ManageHostPage tests
* fix linting errors
* add indeterminate styles to checkbox
* added clearable handler for dropdown component
* fix up no team for add modal
* Add active selection styles and move specific host table styles into ManageHostsPage styles
* changed add host team dropdown to include no team option
* add no team option to bulk transfer host options
* change enroll spelling
Co-authored-by: Noah Talerman <noahtal@umich.edu>
* added permissions for adding host button on host page
* added teams to add host modal dropdown
* add placeholder for dropdown and fix some type issues
* added add host redirect modal on team details
This PR brings the style changes made in the "Align Fleet UI colors with Figma components"
#615 and "Align Fleet UI with Figma (spacing and fonts)" #628 PRs into the master branch.
* added reducers and kolide api teams code, hooked up empty state
* request for get all teams and remove unused loading bar
* added create team functionality|gs
* update link cell to be more generic
* create teams detail page and hook it up
* added tabbing and styling to top nav team details
* added edit and delete modal functionality
* add in table and modals for members for teams
* created reusable edit user modal and use it in manage teams page
* creating add member autocomplete
* hook up adding members to teams
* hook up real members from api into table, and empty state for table
* fix proptype warning
* hooked up table querying for member page
* added remove member modal
* added tems to edit useres on member page
* finish remove member from team
* fixed up editing on members page
* fix the role value in member table
* fix prettier errors
* fixes from PR comments round 1
* add missing error handler on add member
* add dynamic team name to member page and user dynamic user and team names to succuess and errors
* add test for userManagementHelper module
* fix lint errors
* fix tests
* add member test to row results on member page
* Query modal with error, no saved queries, and saved queries
* Ability to search saved queries
* Renders saved queries
* Queries page link uniquely from selected query/host
* Update hostDetailsPage test and refactored component onto own jsx
Pair programming, reviews, and suggestions: Noah Talerman <noahtal@umich.edu>
Reviews and suggestions: Zach Wasserman <zach@fleetdm.com>
* Build SoftwareList in HostDetails page if host.software exists for user
* Render message for no labels/packs/software
Reviewed and suggested changes by: Noah Talerman <noah@fleetdm.com> and Zach Wasserman <zach@fleetdm.com>
- Moves `isEditLabel` out of `<ManageHostPage />`'s state and into its props. The implementation is now similar to `isAddLabel`.
- Add `selectedFilter` to the URL path when editing or adding labels. This helps navigate the user back to the selected label after they click "Cancel" when editing or adding.
- Fix handling of live query error when the number of hosts targeted is 0.
PR #641 attempted to handle the case when a user, running a live query, selects a label that contains 0 hosts.
The fix in this earlier PR introduced a bug that prevented the user from running a live query at all!
* create skeleton of team management page and hook it up with routing
* added reducers and kolide api teams code, hooked up empty state
* request for get all teams and remove unused loading bar
* fix sending teams response to store
* added create team functionality|gs
* added edit and delete fuctionality to teams management
* fixed up some edge cases for deleting and editing teams
* remove unused UserRow
* get list of teams for user to add new users to, fix up Userform
* add prettier and have it format all js code except website:
:
* trying running prettier check in CI
* fix runs on in CI
* change CI job name
* fix prettier erros and fix CI
This if the 2nd PR as part of the of the Align components in Fleet UI with design system in Figma #539
These changes **refactor the spacing and font sizes** used by the frontend.
- Change the scss variables in `padding.scss` and `fonts.scss`.
- Replace custom styles with the new variables throughout all stylesheets.
- This if the 1st PR as part of the of the Align components in Fleet UI with design system in Figma #539
- These changes replace all the color variables in /styles/var/colors.scss with new colors and naming convention used in Figma.
* hook up user and invite data together for data table
* added client derived data to user table
* hooked up action dropdown to table
* hooked up edit modal and password reset
* started adding editing user functiaonlity
* add query params to /invite call
* clean up editing teams
* update select team from to handle existing users with teams
* update closes modal now
* reuse getUser to clean up code in userManagementpage
* pass form data to updating user that is not the current User
* add dynamic userform submit text and fix tests
* fix lint error in table component
* added empty state for user table
* clean up unused data table props
* added delete modal
* add delete user functionality
* add delete option for invite
* Add styles for rows in user table and action dropdown cell
* hook up user and invite data together for data table
* added client derived data to user table
* hooked up action dropdown to table
* hooked up edit modal and password reset
* started adding editing user functiaonlity
* add query params to /invite call
* clean up editing teams
* update select team from to handle existing users with teams
* update closes modal now
* reuse getUser to clean up code in userManagementpage
* pass form data to updating user that is not the current User
* add dynamic userform submit text and fix tests
* fix lint error in table component
* added empty state for user table
* clean up unused data table props
* added delete modal
* add delete user functionality
* add delete option for invite
* Merge in generateClassTag
* Refactor table styles
* Add newline to DropdownCell style sheet
Co-authored-by: Gabriel Hernandez <ghernandez345@gmail.com>
* update checking for admin through global_role in nav
* added defaultGloablRole for creat user modal
* remove unused comment
* fix broken tests
* reenabled search for users tests
Co-authored-by: noahtalerman <47070608+noahtalerman@users.noreply.github.com>
* rework data table, got to point of calling network request correctly
* got to point of rendering table columns and data
* finish up functional changes to data table
* fix tests
* fix styles for table container and data table
* clean up some styles
* update to styles for no host configured
* cleanup and docs
* add missing method for host table text formatting
* disabling unused test. will add back in next PR
* clean up code
- unhandledPromiseRejection errors caused test failures on Node 15.
Instead verbose log these for later followup.
- Fix uses of Nock in tests
- Fix some warnings in tests
- Upgrade some test dependencies
* e2e test for manage user page, and updating styles for ui components
* make checkbox more accessible and create e2e test around creating user
* add react testing library and use it for radio testing
* clean up comments
* update docs and clean up
* use new data table in user manage page'
* remove default empty array hiddenColumns props, was causing render performance problems
* remove unused tooltip in hostcontainer
* add search to user manage table
* add query params to user GET requests
* move createUserForm closer to user management page
* starting to implement create user modal
* starting to add team checking functionality to create user
* styling of select team form
* changing logic for selectedTeamsForm, simplifying
* updated SelectedTeamsForm to handle own state and pass back relevant state to parent
* created reusable infobanner component and use it in osquery options page
* use infobanner in createuserform
* create new Radio component and use in createuserform
* create new Radio component and use in createuserform
* added new radio buttons to createUserForm
* finish custom radio button styling
* finish styling of radio in createUserForm
* fix and add entities/users#loadAll tests
* remove unneeded tests and updated broken ones on UserManagementPage
* remove unused modules
- Update layout on _Login_ page by moving "Log in with SSO" button into the card.
- Update layout on _Confirm SSO invite_ page and remove Confirm SSO invite styles. This page now uses the same style sheet as the standard _Confirm invite_ page.
- Remove `$nav-width` and `$nav-tablet-width` because the navigation is now on the top of the layout.
- Add styles to `CoreLayout` to make the main content (everything except the top nav) fill the window height.
- Add a "Last fetched" column to the table on the Hosts page. This column uses the `detail_updated_at` property.
- Add a "Last fetched" timestamp to the Host details page.
- Adjust styles on _Host details_ page
* add stick side nav to org settings and fixes to sticky nav on other settings pages
* remove unused html
* remove unused href attr
* remove unneeded react fragment
This PR includes several style and experience fixes discovered during a front end QA pass 3-9-2021
Fixes include:
- The content on _Osquery options_ page now fills the entire width of the new layout
- Add consistent messaging in the SMTP warning on the _Organization settings_ and the _User management_ page
- Add spacing consistent with styles for the buttons in the "Delete label" modal have
- Make scroll behavior of `<FlashMessage />` behave with the new top navigation
- Remove the SMTP warning from the _Organization settings_ page
This PR includes additional style changes included in the UI layout changes project #360
Changes include:
- Moving the <FlashMessage /> component below the new horizontal nav
- Editing the "Save options" button on the Osquery options page
- Adding a pseudo-element to <SettingsWrapper /> to prevent bold text from shifting the layout
- Add sentence case for tabs in <SettingsWrapper />
- Adding $horizontal-gradient to colors.scss
* start with making nav horizontal and updating nav and main content areas
* remove unneded subnav styling and JS code
* remove unused isSmallNav and --small styles
* remove isSmallNav in reducer and fix tests
* change 'admin' to 'settings'
* remove unnneded username to logo
* change account page urls
* Add user avatar dropdown to nav
* remove unused background colour on company logo
* get tabbing to work correctly
* implement styling of tab and page descriptions
* change default settings nav to organisation settings
* remove more unneeded subnav code
* fix some broken tests after changes
* pull out getdefaultTabIndex in settingsWrapper
* sticky sub nav for settings pages
* tweak zindex for setting subnav
* updated yarn.lock
* update icons
* fix collapsing nav items
* tweak avatar dropdown styles
* remove sidebar on osquery page
Since the original logic was implemented, there have been some changes
in the way that config refreshes are configured. This commit reflects
those changes and should be backwards compatible.
Closes#357
* chnage webpack to resolve typescript modules. convert TextCell to TS
* change headercell and statuscell to ts
* ignore casesensitve error, seems a bit buggy
* ignore camelcase error, we already use snakecase many places
* updated LinkCell and modules it depends on to typescript
* fix up some warnings from changes
* fix more types in textcell and hosttableconfig
* use alias imports
* add require button state interfcae
* updated typescript version and tsconfig in project
* updated eslint version
* change from experimental export to supported export
* removed accidentally added script
* turn off buggy jsx-a11y eslint rules
* remove unused tslint.json
* fix wrong jsx-a11y depedency
* use correct eslint-plugin-jsx-a11y version
* fix rest of linting errors
* move back js-yaml version to 3 major
* start adding global search filter
* update polyfill setup to use async await for react-table
* update browerslist to sensible defaults
* get global search functionality woring
* more progress on the data table
* get label network calls working in hostdatatable
* get pagination functionality into the HostDataTable
* get search query making network call
* get ordering making query
* make actual sort order network calls
* disable cpu column sorting
* seperate get table data from get labels
* fix issues with input resetting and got search query working
* get sort working
* ignore vs code editor settings
* improve loading spinner to move inside the table
* improve styling
* add sorting arrows
* remove unused sorting arrow component
* add host query params to labels endpoint
* fix style for query textarea on label hosts
* got new pagination working
* set server data as source of truth for table global filter
* cleanup logs
* clean up pagination styles
* fix up paginationa and no host styles
* add result count to table
* remove logs
* tweak header styles
* fix to sort order
* simplify default sort direction
* keep sort order of server api responses and use in host table
* clean up logs
* Add styles for header cell and pagination
* fix tests for ManageHostPage
* fix tests for HostContainer
* fix lower level action reducer and thunk tests
* fix tests for hosts client
* fix up some host count styling
* added back no hosts start message
* fix linting errors
* remove unused old pagination code
* add back scrollToTop utility on pagination
* remove unused code in managehostpage test
Co-authored-by: Noah Talerman <noahtal@umich.edu>
* recreate host table with react-table
* move old host table and container next to other code related to host page
* start replacing old host table with new host table
* replace old table with with new data table
* fix up tests and remove some unused code
- Support both /api/v1/fleet and /api/v1/kolide routes in server.
- Add logging for use of deprecated routes.
- Rename routes in frontend JS.
- Rename routes and add notes in documentation.
This PR adds a new Host details page as part of the Hosts UI project #162
Summary of changes:
- New component <HostDetailsPage />
- Move "Query" and "Delete" buttons from the hosts list to the Host details page
- Add new button variants label and text-link
- Add react-tooltip package to the project (v4.2.13)
This PR adds an "Errors" table to the live query UI.
Summary of changes:
- Errors table includes the columns `hostname`, `osquery_version`, and `error`
- The errors table is only rendered when at least one host fails
- Hosts with an osquery version less than 4.4.0 always display the error "upgrade osquery on this host to 4.4.0+ for error details"
- Explicitly import all icon png assets in the component files they're referenced. Instead of creating a relative path to the icon image asset in the `<Icon />` component. This allows icon assets to be independent of any custom url prefix and fixes#193. In addition, eslint now catches all unresolved paths to image assets.
- Remove the `<Icon />` component
- Remove `icon_name.js`
- Add `<Link />` component and PATHS to 404 and 500 pages. These pages now work with a custom URL prefix specified.
- Remove all icons from the Hosts side panel. These changes are part of the Hosts UI #162.
- Conduct complete visual QA for recent icon changes merged in #128
- Edit styles to vertically align the "copy" and "reveal" icons in EnrollSecretTable
- Clean up unused <KolideIcon /> properties in <SelectTargetsDropdown />
- Add min-height to left side navigation. At window heights under 500px, the user can now vertically scroll to reveal the remainder of the nav options.
- Edit 500 page styles by moving the "Show error" button above the link to "File an issue"
The final PR for the UI Refresh #38.
- Complete UI issues caught during the Dec. 09 QA pass.
- Update button and color styles, including hover and active states, to align with the mockups.
- Update status labels in the hosts list and users list. The status label now includes a colored circle along with a text description.
- Fixes#138.
Fixes#65 by bringing in new regular and bold Source Code Pro monospaced fonts.
- Remove old Source Code Pro font files
- Add new platform icons to <QuerySidePanel />
- Edit styles in <EditPackForm />
- Add new PNG files for the new icons in the left side navigation and the right side labels on the Hosts page.
- Rename the old `<Icon />` component to `<KolideIcon />` and create a new `<Icon />` component. The ultimate goal is to get rid of the `<KolideIcon />` and `<PlatformIcon />` components and use the encompassing `<Icon />` component for all icons. The full transition will be made when we have icon assets to replace all the kolide icons and platform icons. Currently, we don't.
- Rename the `icon_name_for_label.js` utility to `icon_name.js` because the utility now includes `iconNameForLabel()` and `iconNameForPlatform()` functions.
- Fixes issue #127.
- Kolide404 and Kolide500 components renamed to Fleet404 and Fleet500
- Styling for Login and Confirm invite pages are consistent with the recent changes to the Setup page.
- Add "*" character to the 404 <Route />'s path property. Now the 404 page renders when there is no exact path match.
The goal of this PR is to implement the new global styling (colors, buttons, and fonts) to the "App settings" and "Osquery options" pages. These pages are only visible to users granted an admin role.
The goal of this PR is to update the style across the query and packs pages so they are consistent with the latest global styles (colors, buttons, and fonts).
The goal of this PR is to change the layout of the manage users to a table (list view).
Move the user actions into the table view.
Move EditUserForm into a Modal
Update styles for InviteUserForm
Edit copy for the configuring SMTP warning.
The goal of this PR is to update the styles of the LabelForm component.
Also include global style changes for form components (FormField, LabelForm, and others).
- The goal of this PR is to update the styles of the "Add new host" modal.
- Move the "Add new host" button from the hosts sidebar to the center column.
- Add max-width to the hosts list container and the hosts header.
- Move from Mocha to Jest for JS testing (Jest seems to have better support for
'watching' tests and a more active community these days).
- Codemod existing tests to Jest syntax (using https://github.com/skovhus/jest-codemods)
- Fix some errors in tests that were previously hidden.
- Update Babel.
The goal of these changes is to update the main content (center column) of the /hosts page.
What is included in these changes:
- Removing the grid view for hosts. This required removing the actions, reducers, and props using to toggle the display between grid and table view. The toggle buttons in the UI are also removed.
- Adding host_cpu, memory, and uptime columns to the table. This increases the table's width which is now horizontally scrollable.
- Removing the HostDetails component used in the grid view. Moving the helpers.js file to HostTable. Adjusting JS tests to account for these changes.
- Updating pagination styles.
The goal of this PR was to insert new colors, remove legacy colors, and update only the styles accordingly. The Nunito Sans Italic font was also added.
Later PRs will include layout, copy, and style change to individual components. These later changes will more exactly resemble the current mockups.
- Output easy to parse stack traces during run of tests
- Fix some spurious warnings and errors in tests
- Add --exit flag to Mocha invocation to fix hang due to timers in ACE editor
This is the second PR as part of the Fleet UI Refresh #38.
The goal of this PR was to insert all updated Fleet assets and remove all old assets. More style changes, including the exact sizing and placement of the new images, will occur in a future PR.
This is the first PR as a part of the Fleet UI Refresh #38.
Changes include:
- Add Nunito Sans font files and modify global styles to reflect the font change.
- Modify global font variables to reflect new sizing and weight naming conventions.
-- New sizing and naming conventions:
--- SIZE: xx-small: 12px, x-small: 14px, small: 16px, medium: 20px, large: 24px, x-large: 28px
--- WEIGHT: regular: 400, bold: 700
- Remove the old Oxygen font files.
Changes to other style sheets reflect the changes to the new font sizing and weight naming conventions for global variables. The changes don't necessarily use the correct size (as illustrated by mockups). Those "up to spec" sizing changes are to come.
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.
Updated the 500 page component to render a "SHOW ERROR" button.
This button is only rendered if the errors slice of the state contains an error and the base property exists. Otherwise, the 500 page will not render this button because there is no error message to show the user.
Created a errors500 reducer and actions to update the state tree when a 500 error occurs. When 500 error occurs, the errors slice of state is updated with the error object. When the 500 page component unmounts the error object is removed from state.
Demo: https://www.loom.com/share/b87c4aee42274e7bb553e703d3f950c6
"Manual" labels can be specified by hostname, allowing users to specify
the membership of a label without having to use a dynamic query. See the
included documentation.
This commit takes advantage of the existing pagination APIs in the Fleet
server, and provides additional APIs to support pagination in the web
UI. Doing this dramatically reduces the response sizes for requests from
the UI, and limits the performance impact of UI clients on the Fleet and
MySQL servers.
- Add toggle to disable live queries in advanced settings
- Add new live query status endpoint (checks for disabled via config and Redis health)
- Update QueryPage UI to use new live query status endpoint
Implements #2140
Previously this was disabled (perhaps unintentionally due to the
duplicate settings in the .eslintrc.js). Enable the lint rule and fix
the violations.
May fix JS build issues on case-sensitive filesystems.
- Add the server_url_prefix flag for configuring this functionality
- Add prefix handling to the server routes
- Refactor JS to use appropriate paths from modules
- Use JS template to get URL prefix into JS environment
- Update webpack config to support prefixing
Thanks to securityonion.net for sponsoring the development of this feature.
Closes#1661
- Fix padding in query editor autocomplete box
- Hide cursor in read-only query editor
- Remove styling of active line in query editor (which does not update
properly and is therefore distracting)
- Fix padding and reorder buttons in delete label modal
- Prevent a second (unnecessary) retrieval of all hosts when page loaded.
- Disable automatic reloading of hosts when over 100 hosts are present.
This is a stopgap solution to reduce the performance impact of
repeatedly loading many hosts. The final solution will be to implement
proper pagination.
This PR corrects the query editor behavior to run the correct query in
all (tested) circumstances.
Fixes the original issue in #2028 and #2054 (introduced by the fix in #2030)
Closes#2054
Fixes a bug in which the default query would run rather than the query
displayed in the editor unless that query was manually edited after the
page loaded.
Fixes#2028
Almost two years ago, we began referring to the project as Fleet, but there are
many occurences of the term "Kolide" throughout the UI and documentation. This
PR attempts to clear up those uses where it is easily achievable.
The term "Kolide" is used throughout the code as well, but modifying this would
be more likely to introduce bugs.
- Replace uses of deprecated Bourbon helpers with raw CSS
- Add autoprefixer into the build chain to prefix the now removed helpers
This process was achieved by running through each of the deprecation warnings and using the following bash function to replace it in all files:
```
function bourbon-deprecate() {
grep -rl "@include $1" ./frontend --exclude-dir=.git | xargs sed -i '' -E "s/@include $1[(](.*)[)]/$1: \1/g"
}
```
For some helpers, this did not result in valid CSS, so manual modifications were made.
Closes#1189#1274
Useful for SAML login users who cannot log in with `fleetctl login`. Instead
they can pull their session token from the UI and configure the fleetctl client
to use it.
Closes#1865
Normally a Kolide user will always have at least two built in decorators that they can't delete through the UI so a situation with zero decorators should never happen; however, in the event we change this behavior in the future, or a user manually deletes decorators from the database the UI should handle an empty decorator set.
Closes issue #1456 This PR adds a single sign on option to the login form, exposes single sign on to the end user, and allows an admin user to set single sign on configuration options.
Closes#1502. This PR adds support for SSO to the new user creation process. An admin now has the option to select SSO when creating a new user. When the confirmation form is submitted, the user is automatically authenticated with the IDP, and if successful, is redirected to the Kolide home page. Password authentication, password change and password reset are not allowed for an SSO user.
Closes issue #1388. The problem here is that previously, the reset button loaded a hard coded list of default options into the component state, instead of the proper behavior which is to reset the options to default values on the back end, and then load them back into the redux store. This PR adds a ResetOptions endpoint on the server, and wires up the UI so that it triggers the endpoint, then loads the default options from the backend server.
* Isolate each API entity
* Improve code structure in API client and request mocks
* Standardize on a request mock structure
* Use helper for creating request mocks
* Adds Request class to handle API requests
Use the [SockJS Protocol](https://github.com/sockjs/sockjs-protocol) to handle
bidirectional communication instead of plain websockets. This allows
distributed queries to function in situations in which they previously failed
(Load balancers not supporting websockets, issues with Safari and self-signed
certs, etc.).
Also includes fixes to the JS message handling logic where slightly different
message delivery semantics (when using XHR) were exposing bugs.
Fixes#1241, #1327.
* API client for patching a scheduled query
* Change select to check on ScheduledQueriesLists
* Clicking a scheduled query list item selects the scheduled query
* Helpers to format scheduled queries for client/server
* Allow updating a scheduled query
* Form cancel button
* Stop rendering results when query hasn’t been run
* Adds QueryPageSelectTargets component
* Re-arranges target select input on Query Page
* Adds label to KolideAce component
* Re-arrange inputs on the Query Form component