Commit Graph
554 Commits
Author SHA1 Message Date
Scott Gress 02c5026436 Allow ESCAPE in LIKE clauses to be valid SQL (#31222)
for #30109

# Details

This PR fixes an issue in our current SQL parsing library that was
causing queries like this to be marked invalid:

```
SELECT * FROM table_name WHERE column_name LIKE '\_%' ESCAPE '\'
```

This is valid in SQLite because the `\` is not considered an escape
character by default. From [the SQLite
docs](https://www.sqlite.org/lang_expr.html) (see section 3 "Literal
Values (Constants)"; emphasis mine):

> A string constant is formed by enclosing the string in single quotes
('). A single quote within the string can be encoded by putting two
single quotes in a row - as in Pascal. C-style escapes using the
backslash character are not supported because they are not standard SQL.

# Use of forked code

Part of the fix for this was [submitted as a PR to the node-sql-parser
library](https://github.com/taozhi8833998/node-sql-parser/pull/2496) we
now use, and merged. I then found that another fix was needed, which I
submitted as [a separate
PR](https://github.com/taozhi8833998/node-sql-parser/pull/2512). As
these fixes have yet to be made part of an official release of the
library, I made a fork off of the release we were using (5.3.10) and
bundled the necessary build artifacts with Fleet. We have an [ADR
proposing the use of submodules for this
purpose](https://github.com/fleetdm/fleet/pull/31079); I'm happy to
implement that instead if we approve that, although for a front-end
module with a build step it's a bit more complicated. Hopefully this
code will be released in `node-sql-parser` soon and we can revert back
to using the dependency.

Here is the [full set of
changes](https://github.com/taozhi8833998/node-sql-parser/compare/master...sgress454:node-sql-parser:5.3.10-plus).

# Checklist for submitter

- [X] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.
- [X] Manual QA for all new/changed functionality
2025-07-25 10:13:55 -05:00
RachelElysia 8fc1468d37 Fleet UI: Host details > Software > Library statuses clickable, add software button (#30318) 2025-06-30 13:26:01 -04:00
Gabriel Hernandez a5c69a60a4 Fix bug for not being to reenable end user migration in UI (#30106)
Fixes #30063

This fixes an issue added in the
[PR](https://github.com/fleetdm/fleet/pull/29968) where the user was not
able to reenable the end user migration form.

I've also added improved a11y attributes to the slider component,
ensured we are functionally disabling the form controls during gitops
mode and not just visually, and updated/added tests for the
EndUserMigrationSection component.


- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
- [x] Added/updated automated tests
- [x] Manual QA for all new/changed functionality
2025-06-20 17:04:30 +01:00
jacobshandling 69cd060b9a UI: Consistent password field styling (#29984) 2025-06-13 11:37:26 -04:00
RachelElysia c574c4db25 Fleet UI: Consistent font size across input fields and dropdowns (#29865) 2025-06-10 15:04:18 -04:00
Luke Heath 3ef7caef9d Apply starter library during new Fleet instance setup (#29564) 2025-05-30 16:27:33 -05:00
RachelElysia 7fe5dcd045 Fleet UI components; Editor copy button added, File details/uploader gitopsCompatible can now be false (#29307) 2025-05-21 13:32:18 -04:00
RachelElysia 175f110f86 Fleet UI: Created consistent UI for the copy button of an input field (#29056) 2025-05-13 10:24:32 -04:00
RachelElysia 57a2fb4341 Fleet UI: Add Self-service categories key and filtering (#28506) 2025-05-02 12:11:48 -04:00
jacobshandlingandJacob Shandling 9ab0eb2acd UI: Update conditional access on a per-policy basis (#28658)
## For #28049 , #28610

- **Implement front end ability to enable or disable conditional access
on a per-policy basis**
- **Update policy status UI to include new "action required" state,
representing a failed policy on a host with conditional access enabled**
- Additional improvements

<img width="1624" alt="Screenshot 2025-04-29 at 1 32 33 PM"
src="https://github.com/user-attachments/assets/960b3348-b0e2-48b8-bcff-28f91f64fd01"
/>

<img width="1624" alt="Screenshot 2025-04-29 at 12 15 39 PM"
src="https://github.com/user-attachments/assets/b0e0cf1f-a693-4e0b-b18a-a44ee258975f"
/>

<img width="1624" alt="Screenshot 2025-04-29 at 12 15 49 PM"
src="https://github.com/user-attachments/assets/15f7bea1-7338-4997-93bf-8baeb308e3f0"
/>

<img width="1400" alt="updated policies table headers"
src="https://github.com/user-attachments/assets/164fd84a-a9ee-4dfe-8d73-b4e82e27edbc"
/>

- [x] Changes file added for user-visible changes in `changes/`
- [ ] Added/updated automated tests
- [x] A detailed QA plan exists on the associated ticket (if it isn't
there, work with the product group's QA engineer to add it)
- [x] Manual QA for all new/changed functionality

---------

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2025-05-01 11:43:38 -07:00
RachelElysia 0f2b5aa536 FE: Buttons clean up Part 2 (#28346) 2025-04-23 14:42:30 -04:00
RachelElysia 3cf9202e39 Fleet UI: Added hover cursors to checkbox and radio components (#28113) 2025-04-16 13:29:08 -04:00
Scott Gress 183d0d8150 Update SQL parser to handle more modern syntax (#28211)
For #26366

# Checklist for submitter

- [X] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.

# Details

This PR fixes an issue where the SQL parser in the UI doesn't recognize
window functions like `OVER()` and marks the SQL as having syntax
errors. The fix here is to update to a more modern parsing library. This
involved updating some AST-parsing code we have for determining which
tables are used in a query, for the purposes of feeding autocomplete and
determining query compatibility.

# Testing

I tested this with the query mentioned in #26366 in Chrome, Firefox and
Safari on MacOS. I also added new unit tests for our SQL helper
functions.

# Notes

During testing I discovered that we were bundling two versions of the
ACE editor into our frontend package. By upgrading one version by a
couple of patches to make the two dependencies equal, we chop out ~300k
from our bundle.
2025-04-16 10:10:52 -05:00
RachelElysia 7f71866571 FE: Button renaming, better storybook view, remove unused code (#28245) 2025-04-16 09:56:09 -04:00
jacobshandlingandJacob Shandling 748b5bcd51 Full-stack: Make "Server url" validation conditions consistent across Fleet, update Web Address form validation and submission logic per Fleet best practices (frontend/docs/patterns.md) (#27455)
## For #27454 

Consider Fleet web URL to be valid if it:

- (Front end and back end): uses “https://” or “http://” scheme
 and
- (Front end) accepts only valid or "localhost" hosts (e.g., "a.b.cc" or
"localhost", but not "a.b")
- (Back end) accepts any host (e.g., "localhost", "a.b.cc", or even
"a.b")


### Setup flow UI URL validation:

![setup](https://github.com/user-attachments/assets/34a428d2-5731-46f2-b708-c88b790e3667)

### Org settings UI URL validation:

![org-settings](https://github.com/user-attachments/assets/147916c8-9c5b-4ae7-9e14-625c65b42d0a)

### Server URL validation:
<img width="1464" alt="invalid-url-server"
src="https://github.com/user-attachments/assets/83a112e1-6318-4b09-864d-fe66a223835d"
/>

### Invalid Fleet server URL in DB error:

![invalid-url-in-db](https://github.com/user-attachments/assets/aae591fb-6cc3-49bd-8556-22129be4c2c4)


- [x] Changes file added for user-visible changes in `changes/`,
- [x] Added/updated automated tests
- [ ] A detailed QA plan exists on the associated ticket (if it isn't
there, work with the product group's QA engineer to add it)
- [x] Manual QA for all new/changed functionality

---------

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2025-03-27 13:56:38 -07:00
RachelElysia 45015b01e8 Fleet UI: Update hover and focus states for dropdowns and inputfields (#26506) 2025-02-28 08:46:00 -05:00
Scott Gress 973fe46c5e Add pagination to manage automations (#26414)
For #23243 

# Checklist for submitter

<!-- Note that API documentation changes are now addressed by the
product design team. -->

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [x] Added/updated automated tests
- [ ] A detailed QA plan exists on the associated ticket (if it isn't
there, work with the product group's QA engineer to add it)
- [x] Manual QA for all new/changed functionality

## Details

This PR updates the policy Manage Automations modals to support
pagination. Previously, these modals received a list of policies from
the main Manage Policies page, which is itself paginated, so that a user
could only add automations to whatever policies were currently listed on
the Manage Automations page. This PR does some refactoring via the
creation of a new PaginatedList component which:

* accepts a `fetchPage` property it can call to get a page of data, 
* renders the data in a list with checkboxes and optional custom markup
(e.g. dropdowns)
* keeps track of changed ("dirty") items in the list, even across page
changes
* allows parent components to access the list of dirty items via a React
`ref`

For this specific use case, there's also a new `PoliciesPaginatedList`
which implements the `fetchPage` for getting a page of policies, and
adds Save and Cancel buttons. Each of the updated modals uses
`PoliciesPaginatedList` to replace its current code for rendering
policies in a list, and delegates much of the logic around change
tracking to the new components.
2025-02-27 12:43:38 -06:00
RachelElysia 7b7fa2fcd1 Fleet UI: Component fixes (styling bugs and code cleanup) (#26149) 2025-02-26 13:47:28 -05:00
Scott Gress e013ce742a Show "Manage Automations" dropdown when no policies are present (#26298)
For #23243 

# Checklist for submitter

<!-- Note that API documentation changes are now addressed by the
product design team. -->

- [X] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.

## Details

This PR changes the behavior of the Manage Automations dropdown on the
Manage Policies page. Any user that has permission to manage policies
will now always see the dropdown. If there are no policies added for the
selected team (or no policies at all, in the case of "All teams" or
users on the free tier), the dropdown is disabled with a tooltip.

## Screenshots

**Free tier:**
<img width="753" alt="image"
src="https://github.com/user-attachments/assets/37a3b97a-74b3-4495-ace4-bfece30b3822"
/>

---

**Premium tier, All Teams:**
<img width="736" alt="image"
src="https://github.com/user-attachments/assets/bedd9a5f-e2aa-49da-8943-61bc69af9744"
/>

---

**Premium tier, team selected:**
<img width="744" alt="image"
src="https://github.com/user-attachments/assets/e1c2397b-1d19-46f2-b78d-e7a923f91c8f"
/>
2025-02-25 11:10:33 -06:00
jacobshandlingandJacob Shandling 5d9026b7e5 UI - GitOps Mode: Core abstractions, first batch of applications (#26401)
## For #26229 – Part 1


![ezgif-6bbe6d60c12ed4](https://github.com/user-attachments/assets/37a04b64-abd7-4605-b4ac-9542836ff562)

- This PR contains the core abstractions, routes, API updates, and types
for GitOps mode in the UI. Since this work will touch essentially every
part of the Fleet UI, it is ripe for merge conflicts. To mitigate such
conflicts, I'll be merging this work in a number of iterative PRs. ~To
effectively gate any of this work from showing until it is all merged to
`main`, [this commit](feedbb2d4c25ec2e304e1f18d409cee62f6752ed) hides
the settings section that allows enabling/disabling this setting,
effectively feature flagging the entire thing. In the last of these
iterative PRs, that commit will be reverted to engage the entire
feature. For testing purposes, reviewers can `git revert
feedbb2d4c25ec2e304e1f18d409cee62f6752ed` locally~ The new settings
section for this feature is feature flagged until all PRs are merged -
to show the setting section while testing, run `ALLOW_GITOPS_MODE=true
NODE_ENV=development yarn run webpack --progress --watch` in place of
`make generate-dev`

- Changes file will be added and feature flag removed in the last PR

- [x] Settings page with routing, form, API integration (hidden until
last PR)
- [x] Activities
- [x] Navbar indicator
- Apply GOM conditional UI to:
    - [x] Manage enroll secret modal: .5
    -  Controls >
        - [x] Scripts:
        - Setup experience > 
            - [x] Install software > Select software modal
        - [x] OS Settings >
            - [x] Custom settings
            - [x] Disk encryption
        - [x] OS Updates
 
2/18/25, added to this PR:

   - [x] Controls > Setup experience > Run script
   - [x] Software >
        - [x] Manage automations modal
        - [x] Add software >
            - [x] App Store (VPP)
            - [x] Custom package
   - [x] Queries
        - [x] Manage
        - [x] Automations modal
        - [x] New
        - [x] Edit
   - [x] Policies
     - [x] Manage
     - [x] New
     - [x] Edit
     -  Manage automations
       - [x] Calendar events


- [x] Manual QA for all new/changed functionality

---------

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2025-02-20 08:41:07 -08:00
RachelElysia 6145cf16f3 Fleet UI: Unreleased selected option bug (#26217) 2025-02-10 13:08:27 -05:00
RachelElysia 103d5e8920 Fleet UI: Unreleased icon hover color bug (#26103) 2025-02-05 15:49:05 -05:00
RachelElysia 4779fef8a7 Fleet UI: New button dropdown does not render option over placeholder when selected (#25948) 2025-02-03 09:16:33 -05:00
RachelElysia 42d7227611 Fleet UI: Fix Manage automation dropdown styling (#25753) 2025-01-27 09:14:16 -05:00
jacobshandlingandJacob Shandling 55fd95d760 UI – Updates to confirm invite flow (#25583)
## For #24486 

- Check invite validity before rendering form, error if invalid
- Use data returned from validity check to pre-populate form
- Remove dependence of flow on URL params other than token
- Remove other URL params from link generated in invite confirmation
email
- Refactor form from JS to TS
- Refactor form from class to functional components
- Cleanup unused logic
- Improve error handling

**Invalid invite**

![invalid](https://github.com/user-attachments/assets/c42c47ca-6a0d-4112-89ea-68b77e748d12)


**Valid invite**

![valid-login-flow](https://github.com/user-attachments/assets/f2b97306-a1bd-47be-9725-968a3c4ad8a8)



- [x] Changes file added for user-visible changes in `changes/`
- [x] Updated tests
- [ ] A detailed QA plan exists on the associated ticket (if it isn't
there, work with the product group's QA engineer to add it)
- [x] Manual QA for all new/changed functionality

---------

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2025-01-24 10:55:39 -08:00
RachelElysia c4a556618f Fleet UI: Updates to dropdown selected states (#25635) 2025-01-22 10:22:59 -05:00
Gabriel Hernandez 8168ff3655 update storybook to 8.4.7 (#25451)
For #25349

This updates storybook and its addons to 8.4.7. This is done to remove
the transitive dependency on path-to-regexp,
which is no longer used in this version of storybook.

This will fix the original vulnerability issue for `path-to-regexp`
2025-01-20 16:17:33 +00:00
RachelElysia 65da5adfa7 Fleet UI: Fix dropdowns and use newer react-select (#25374) 2025-01-14 09:08:46 -08:00
RachelElysia 5873cb9ef7 Fleet UI: Software headers more responsive (#25212) 2025-01-10 10:37:55 -05:00
RachelElysia 97fc14da72 Fleet UI: Fix radio help text font size (#25105) 2025-01-03 09:29:56 -05:00
RachelElysia d8129bf139 Fleet UI: Allow select target search for labels and teams (#24798) 2024-12-23 16:20:51 -05:00
Gabriel Hernandez 3681b8f7ac Activities UI and api integation/tests for the scoped software via labels feature (#24888)
relates to #24828, #24792

This updates the UI activities software including a new software details
show details modal:

<img width="825" alt="image"
src="https://github.com/user-attachments/assets/3dd3019b-c94c-427b-9c52-d678a311c4bc"
/>

It also includes tests and api integration work for the creating and
reading of scoped software via labels.

> NOTE: still need to do the editing which we can do in another PR when
the API is ready.

- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2024-12-19 11:09:38 -06:00
RachelElysia a59b977850 Fleet UI: Keyboard accessibility for clickable rows, view report (#23625) 2024-12-18 10:12:27 -05:00
RachelElysia 6c79c07441 Fleet UI: Dropdown always scrolled to view in userform (#24719) 2024-12-13 09:26:58 -05:00
Sarah Gillespie f25c845da2 Add metadata field to end user authentication UI (#24579) 2024-12-10 14:13:15 -06:00
RachelElysia 603c223f8b Fleet UI: 2FA (#24442) 2024-12-05 15:54:43 -05:00
Jahziel Villasana-Espinoza 9df4b066ff chore: merge main 2024-12-03 13:16:00 -05:00
Martin Angers 7d3b11a10c Merge branch 'main' into feat-automatic-migrate-windows-hosts 2024-12-03 11:07:25 -05:00
RachelElysia f6425e686c Fleet UI: Update Dropdown to use react-select 5.4 and other cleanup (#24164) 2024-12-03 09:08:11 -05:00
Gabriel Hernandez afc4cc5d23 add UI for new windows mdm page and automatic migration (#24068)
relates to #22896

Implements the UI for the windows automatic migration.

**new windows mdm page layout with automatic migration checkbox**


![image](https://github.com/user-attachments/assets/2909d6d2-e802-4dec-9c78-0b8f6a4466c0)

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [ ] Added/updated tests
- [x] Manual QA for all new/changed functionality
2024-11-22 16:52:03 +00:00
Gabriel Hernandez cab2ebb016 Merge branch 'main' into feat-create-policies-from-fleet-apps 2024-11-22 11:58:00 +00:00
Luke Heath 8d0cc970f4 Fix teams modal only showing two options (#23889) 2024-11-20 11:13:46 -06:00
Gabriel Hernandez 0d459359a4 Feat UI create policies fleet app (#23842)
relates to #23136

This is the UI for the creating of policies when adding fleet maintained
software. This includes only the creating of the policy and there will
be another PR for viewing more information on the software titles
details page.


**new install type options. this determines if a policy should be
created or not.**

![image](https://github.com/user-attachments/assets/20538c66-bc1c-4903-aa70-83d24da97617)


there are also some new icons for the software titles.

- [] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
- [x] Manual QA for all new/changed functionality
2024-11-20 11:41:40 +00:00
RachelElysia f8e09ad4f3 Fleet UI: Disabled forms cannot be accessed via keyboard (#23727) 2024-11-13 15:38:28 -05:00
RachelElysia 1fed4759d8 Fleet UI: Add enable automations slider to query forms (#23562) 2024-11-13 09:32:59 -05:00
RachelElysia 2a756088f1 Fleet UI: Accessibility button actions, tabbing (#22916) 2024-10-25 11:02:52 -04:00
RachelElysia 97ef401bea Fleet UI: Checkbox and accessibility styling, tab through select targets (#22943) 2024-10-17 10:01:23 -04:00
RachelElysia b08b488a6b Fleet UI: Consistent behavior for radio buttons, add tests to components (#22901) 2024-10-16 11:37:38 -04:00
RachelElysia dc6c1383e4 Fleet UI: Update login tab order (#22930) 2024-10-16 11:24:27 -04:00
RachelElysia a2e7010ee2 Fleet UI: Add SCEP integration to MDM settings (#22275) 2024-10-15 09:23:59 -04:00