Commit Graph

348 Commits

Author SHA1 Message Date
Brian Manifold
4dde7293d5 fix(portal): Fix show page errors when entity was created by API (#7002)
Why:

* A handful of 'show' pages were throwing errors for entities created
using the API. The reason was due to the fact that the
`created_by_actor` was not being preloaded and when the details on the
show page were being rendered. This commit updates the various pages to
preload the `created_by_actor` to allow for both API created entities
and UI created entities.
2024-10-10 15:44:53 +00:00
Brian Manifold
928fab3878 fix(portal): Fix minor UI issues on API Clients show page (#6955)
- Updated revoke button colors and icons.
- Updated the 'Created By' to use a helper function to get an email
address rather than using the provider_identifier which may be a random
string depending on the type of provider the identity was created under.
- Added a link to the actor that created the API token

### Screenshot of updated view
<img width="1168" alt="Screenshot 2024-10-07 at 1 11 43 PM"
src="https://github.com/user-attachments/assets/80444815-f045-49db-b570-dc9dc58c33d2">

Closes #6269
2024-10-08 14:40:40 +00:00
Andrew Dryga
34f42cb761 feat(portal): Accept hardware identifier fields and reset verification when they are changed (#6914)
If previous value is **null then** a new value is persisted and
verification is **not removed**.
If previous value is **not null** then a new value is persisted and
verification is **removed**.

<img width="957" alt="Screenshot 2024-10-02 at 4 59 58 PM"
src="https://github.com/user-attachments/assets/302208ca-3693-40f7-a08a-4521b7c0df05">

---------

Signed-off-by: Andrew Dryga <andrew@dryga.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-10-04 01:02:55 -06:00
Andrew Dryga
14544b27cc feat(portal): Allow connection-time conditions for internet resources (#6899)
Closes #6848
2024-10-01 16:10:17 -06:00
Jamil
b298e79d06 fix(portal): Minor UI consistency fixes for resource/group select (#6860)
- [x] Spacing consistency
- [x] Border radius consistency
- [x] Minor grammar
- [x] Dismiss select when item is selected
- [x] Add shadow to stand out from rest of form
- [x] Prevent from opening when disabled
- [x] Use `cursor-not-allowed` when disabled for consistency with other
form elements


Before


<img width="670" alt="Screenshot 2024-09-27 at 5 01 38 PM"
src="https://github.com/user-attachments/assets/79e3a4c6-4d23-4edd-93b2-149acc58c37b">



After


<img width="677" alt="Screenshot 2024-09-27 at 5 11 48 PM"
src="https://github.com/user-attachments/assets/e1453c05-fed7-4d87-a176-6f6ce1267488">

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
Co-authored-by: Andrew Dryga <a@firezone.dev>
2024-10-01 16:14:45 +00:00
Andrew Dryga
c2b8633914 feat(portal): Allow searching for resources and groups while creating and editing policies (#6840)
Closes #4186

Video: 

![demo](https://github.com/user-attachments/assets/c11870f5-b512-4ee1-8c48-ab292f1ff8ea)
2024-09-27 13:54:42 -06:00
Jamil
4c6a64defe fix(portal): Fix order of desc and name (#6796)
Updated to match the precedent set by `new`
2024-09-20 13:50:54 -07:00
Andrew Dryga
0d6c15c787 fix(portal): Do not break Flowbite popovers on DOM patching (#6787)
Closes [#6682](https://github.com/firezone/firezone/issues/6682)
2024-09-19 16:09:38 -06:00
Andrew Dryga
3187c70fb5 fix(portal): Fix flakiness with resource edit UI (#6762) 2024-09-18 14:26:47 -06:00
Andrew Dryga
3652839b1a feat(portal): Allow updating policies and resources (#6690)
Now you can "edit" any fields on the policy, when one of fields that
govern the access is changed (resource, actor group or conditions) a new
policy will be created and an old one is deleted. This will be
broadcasted to the clients right away to minimize downtime. New policy
will have it's own flows to prevent confusion while auditing. To make
experience better for external systems we added `persistent_id` that
will be the same across all versions of a given policy.

Resources work in a similar fashion but when they are replaced we will
also replace all corresponding policies.

An additional nice effect of this approach is that we also got
configuration audit log for resources and policies.

Fixes #2504
2024-09-18 13:06:05 -06:00
Brian Manifold
716623a993 feat(portal): Add IDP sync error email notifications (#6483)
This adds a feature that will email all admins in a Firezone Account
when sync errors occur with their Identity Provider.

In order to avoid spamming admins with sync error emails, the error
emails are only sent once every 24 hours. One exception to that is when
there is a successful sync the `sync_error_emailed_at` field is reset,
which means in theory if an identity provider was flip flopping between
successful and unsuccessful syncs the admins would be emailed more than
once in a 24 hours period.

### Sample Email Message
<img width="589" alt="idp-sync-error-message"
src="https://github.com/user-attachments/assets/d7128c7c-c10d-4d02-8283-059e2f1f5db5">
2024-09-18 15:29:50 +00:00
Jamil
f37087808d docs: Update docs to use service account for sync for Google Workspace (#6706)
- Updates docs to show steps for configuring service account for sync
- Minor fixes to the in-portal instructions


Fixes #6489
2024-09-16 23:47:21 +00:00
Jamil
a729d364c9 docs: Add clarified instructions regarding setting up the Internet resource (#6705)
Fixes some UX issues seen by customers.
2024-09-16 23:37:40 +00:00
Andrew Dryga
ab3e42b1b4 fix(portal): Do not show billing limits when they are empty (#6677) 2024-09-13 14:00:26 -06:00
Jamil
d0b211ce5e fix(portal): Fix verified shield alignment/spacing (#6683)
Was taking screenshots for the new verification feature and noticed the
alignment / spacing was off, so decided to quickly adjust them.


# Before
<img width="269" alt="Screenshot 2024-09-13 at 9 20 39 AM"
src="https://github.com/user-attachments/assets/6b5ba98f-f38c-4acb-a762-79e89901bd1e">
<img width="785" alt="Screenshot 2024-09-13 at 9 20 15 AM"
src="https://github.com/user-attachments/assets/5ff981bd-0643-474c-8324-5a5aaa3dcb2f">


# After

<img width="293" alt="Screenshot 2024-09-13 at 9 36 58 AM"
src="https://github.com/user-attachments/assets/b5667d2a-2ada-46c3-b3b6-4e1cacde5e18">

<img width="620" alt="Screenshot 2024-09-13 at 9 31 41 AM"
src="https://github.com/user-attachments/assets/586ce7f8-eccc-4ecf-a65b-bca799eddeb6">
2024-09-13 18:48:45 +00:00
Andrew Dryga
6c811796f7 fix(portal): Do not save new condition with an empty value and handle it properly if it's saved like that (#6624) 2024-09-06 10:43:21 -07:00
Jamil
03cbe660bb fix(portal): Sidebar and logo spacing fixes (#6621)
Fixes margin/sidebar spacing.
2024-09-06 09:04:54 -07:00
Andrew Dryga
ed42f1db9f fix(portal): Show banners when trial is about to expire or is expired (#6579)
Signed-off-by: Andrew Dryga <andrew@dryga.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-09-05 17:14:29 -07:00
Andrew Dryga
da81fb7f41 feat(portal): Allow client verification and add a policy condition to enforce it (#6604)
<img width="1414" alt="Screenshot 2024-09-05 at 1 17 08 PM"
src="https://github.com/user-attachments/assets/f50816e5-1e16-413c-be35-15ef9153a95d">
<img width="1404" alt="Screenshot 2024-09-05 at 1 17 13 PM"
src="https://github.com/user-attachments/assets/a5e055d0-321d-417e-9fd8-78e9643498cd">
<img width="1178" alt="Screenshot 2024-09-05 at 1 17 23 PM"
src="https://github.com/user-attachments/assets/6ea45486-98fb-495f-96d9-a96eb01925dd">
<img width="678" alt="Screenshot 2024-09-05 at 1 17 31 PM"
src="https://github.com/user-attachments/assets/45b4e798-d1b8-4574-97b3-a41dec1619fd">
<img width="632" alt="Screenshot 2024-09-05 at 1 17 46 PM"
src="https://github.com/user-attachments/assets/3c7c02e0-fc78-442e-86d3-fa711c9bb77c">
2024-09-05 14:35:38 -07:00
Andrew Dryga
2cf2d447c5 chore(portal): Move Resources above Policies in the menu since they are created first (#6602) 2024-09-05 14:35:24 -07:00
Andrew Dryga
4e08e69c84 fix(portal): Reset the rate limit when user signed in (#6582) 2024-09-04 04:42:08 +00:00
Andrew Dryga
812dc9190c fix(portal): Reduce the timeouts for rate limited emails (#6573)
Fixes #6108
2024-09-03 20:01:46 +00:00
Jamil
5acea60dc6 fix(portal): Fix flash width and hero logo on auth pages (#6482)
# Before

<img width="1131" alt="Screenshot 2024-08-29 at 8 54 21 AM"
src="https://github.com/user-attachments/assets/65aadaaa-dc92-4b2d-8fd4-a8ec776bc697">
<img width="3120" alt="Screenshot 2024-08-29 at 9 00 38 AM"
src="https://github.com/user-attachments/assets/aa9846dc-9a01-4282-b9eb-539b38e7f67d">

<img width="702" alt="Screenshot 2024-08-29 at 9 03 26 AM"
src="https://github.com/user-attachments/assets/39e30430-ed0a-46c6-84a1-f4edecacbdb3">


# After

<img width="1100" alt="Screenshot 2024-08-29 at 8 54 30 AM"
src="https://github.com/user-attachments/assets/9b5ee17a-e95f-4195-8439-f94298d6ecf9">
<img width="3120" alt="Screenshot 2024-08-29 at 9 00 54 AM"
src="https://github.com/user-attachments/assets/be962785-684f-4de1-bf60-31e3567440ca">
<img width="621" alt="Screenshot 2024-08-29 at 9 09 54 AM"
src="https://github.com/user-attachments/assets/33b6d501-b5ad-494d-8c75-faf6bf63068f">
<img width="572" alt="Screenshot 2024-08-29 at 9 14 52 AM"
src="https://github.com/user-attachments/assets/c72cfc5a-8824-49e2-9ba2-984ebd490251">
2024-08-30 16:01:22 +00:00
Andrew Dryga
2a808292d0 feat(portal): Add blocked_tx_bytes to flow activity metrics (#6487)
Closes #4787
2024-08-29 14:21:51 -06:00
Andrew Dryga
3139651db4 feat(portal): Create default site for new accounts (#6488)
Closes #5012
2024-08-29 14:21:39 -06:00
Andrew Dryga
572c5671d0 feat(portal): Use Service Accounts to sync Google Workspace directory (#6390)
We will need to update the docs for the website, some screens to show
where the settings are:
<img width="1728" alt="Screenshot 2024-08-19 at 1 04 23 PM"
src="https://github.com/user-attachments/assets/88ebb06f-241d-44c8-90fa-258d0b78905e">
<img width="1436" alt="Screenshot 2024-08-19 at 1 04 02 PM"
src="https://github.com/user-attachments/assets/5f7a1011-5a53-4348-81cb-da804ee18bed">

Related [#5959](https://github.com/firezone/firezone/issues/5959)

---------

Signed-off-by: Andrew Dryga <andrew@dryga.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-29 13:30:34 -06:00
Andrew Dryga
4973ac9d4c fix(portal): Replace missed data-confirms with modals (#6485)
Closes #6147
2024-08-29 13:28:55 -06:00
Andrew Dryga
2fb5d6a0ac feat(portal): Allow deleting stale actors even for active providers (#6471) 2024-08-28 16:24:00 -06:00
Andrew Dryga
835fc4c8eb chore(portal): Bump all deps related to portal (#6445) 2024-08-28 10:40:02 -06:00
Andrew Dryga
2d083379c6 feat(portal): Internet resources (#6299)
They will be sent in the API for connlib 1.3 and above.

I think in future we can make a whole menu section called "Internet
Security" which will be a specialized UI for the new resource type (and
now show it in Resources list) to improve the user experience around it.

Closes #5852

---------

Signed-off-by: Andrew Dryga <andrew@dryga.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-27 23:11:17 +00:00
Brian Manifold
5d3fc7d0c4 feat(portal): Update Client index page to search all columns (#6377)
Why:

* Currently, when searching on the Client index page in the portal, the
only field being searched is the Client name. This commit adds the
ability to search either the Client name or the Actor name.

Closes: #5738
2024-08-26 21:57:41 +00:00
Andrew Dryga
43dc6c2053 fix(portal): Preload provider on pubsub events for the policy (#6444) 2024-08-26 15:32:13 -06:00
Jamil
c3d5a2a2d7 fix(ux/portal): conditions ux tweaks (#6417)
fixes #6367 

<img width="720" alt="Screenshot 2024-08-22 at 1 58 20 PM"
src="https://github.com/user-attachments/assets/806e4393-17a4-4bdf-9c6c-c1cfad641d78">

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-23 05:15:02 +00:00
Jamil
17c48c8b05 fix(ux/portal): Clarify note about IPv4/6 upstreams (#6407)
Closes #5115 

<img width="1155" alt="Screenshot 2024-08-22 at 1 10 56 AM"
src="https://github.com/user-attachments/assets/3138e055-28c5-47cc-a9db-9f78d36e0d40">
2024-08-22 16:18:28 +00:00
Brian Manifold
95ec1871e7 feat(portal): Allow Policies to be searched by Resource/Group (#6286)
Why:

* When using the Portal UI, it can be difficult to find a given Policy
as only 10 are shown on the page at a time. It was also difficult to
determine which Resources a Group had access to and vice versa what
Groups were allowed to access a given Resource. This change allows
searching by either Resource or Group to filter what Policies are shown.

Closes: #5624
2024-08-20 21:13:22 +00:00
Andrew Dryga
a5342256c3 feat(portal): Allow bulk-deleting synced actors (#6352)
Closes #6301
Closes #6217

<img width="1728" alt="Screenshot 2024-08-19 at 12 19 16 PM"
src="https://github.com/user-attachments/assets/0c1b570d-9ea9-413a-a8b5-febcd6d37072">
2024-08-20 13:05:19 -06:00
Jamil
c67cbfad08 fix(portal): Fix helptext grammar for DNS resource (#6306)
Minor helptext fix for the DNS resource helptext.
2024-08-15 22:03:19 +00:00
Jamil
b1b9b552c2 fix(portal): Clarify how synced users count against billing (#6285)
Fixes #6155 

One question we get with almost each new customer is "if I enable sync,
won't that count towards my bill?". This PR aims to answer that question
right when they create the provider.

I will also make sure to update Enterprise accounts in Stripe with
`monthly_active_users_acount` so that they can view this metric on the
Billing page.

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-14 19:04:25 +00:00
Brian Manifold
4e9bd7334a fix(portal): Fix Resource show error on API created Resource (#6284)
Viewing a Resource created by an API client was crashing the view due to
the function creating the link to the actor not accounting for the API
client case.

Closes #6267
2024-08-13 22:07:00 +00:00
Jamil
4f4f8f83d2 revert: "feat(portal): Add 'temp account' feature for launch HN" (#6275)
Reverts firezone/firezone#6153

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-13 18:31:40 +00:00
Andrew Dryga
c922ea29e9 fix(portal): Fix DNS wildcard support for Gateways (#6270) 2024-08-12 12:54:20 -06:00
Andrew Dryga
00b93f6b82 feat(portal): Wildcard dns with backwards compatibility (#6214)
If a new resource is created that will use format not supported by
previous client versions we temporarily show a warning:
<img width="683" alt="Screenshot 2024-08-07 at 2 28 57 PM"
src="https://github.com/user-attachments/assets/bbfdfc96-0c4b-4226-93c5-bc2b5fdb9d30">

It will also be excluded from `resources` list for older clients (below
1.2).

---------

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2024-08-10 18:25:24 +00:00
Jamil
bf7e41d6c9 chore(ux): Fix minor API beta page UX issues and add reply-to address (#6207)
Fixes help text, opens link in new page, quick polish on flash styling,
and adds `reply-to` so I can handle the email chain directly in HubSpot.

<img width="1233" alt="Screenshot 2024-08-07 at 10 44 36 AM"
src="https://github.com/user-attachments/assets/eb261ab3-9c3f-4aec-b530-fb14bbaf7c3d">
2024-08-07 20:36:36 +00:00
Brian Manifold
e78737c4c8 fix(portal): Refactor API URL config for Web app (#6202)
Why:

* The Swagger UI is currently served from the API application. This
means that the Web application does not have access to the external URL
in the API configuration during/after compilation. Without the API
external URL, we cannot generate a proper link in the portal to the
Swagger UI. This commit refactors how the API external URL is set from
the environment variables and allows the Web app to have access to the
value of the API URL.

Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-07 19:30:18 +00:00
Andrew Dryga
13c23d3b78 fix(portal): Do not fail when email identity is not found (#6187)
We were generating fake tokens when identity was not found but those had
empty ids so the code crashed. Now we fake the entire token and make
sure it's length is stable.
2024-08-07 10:25:08 -06:00
Thomas Eizinger
94527f9fa1 fix(gateway): always masquerade for docker-deployed gateways (#6169)
Without masquerading, packets sent by the gateway through the TUN
interface use the wrong source address (the TUN device's address)
instead of the gateway's actual network interface.

We set this env variable in all our uses of the gateway, thus we might
as well remove it and always perform unconditionally.

---------

Signed-off-by: Thomas Eizinger <thomas@eizinger.io>
Co-authored-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-08-07 03:00:50 +00:00
Brian Manifold
6ed5fa3c33 fix(portal): Temporarily revert verified routes for API UI (#6185)
This temporarily reverts commit
d1703d2849.

The long term fix will be to have the API URL be set by environment
variables, but in the interest of time it will be hardcoded for now.

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-06 10:00:48 -07:00
Brian Manifold
023d05ece1 feat(portal): Add 'temp account' feature for launch HN (#6153)
Why:

* As part of our Launch HN, it was recommended to have a way to allow
people to try Firezone without needing to sign up. This commit adds the
changes need to create temporary accounts that are intended to be
deleted after the Launch HN is complete.

## Screenshots

#### Start Page
<img width="1459" alt="Screenshot 2024-08-02 at 11 00 15 AM"
src="https://github.com/user-attachments/assets/9b4c5dd4-52ee-43dc-8b4f-d3cc6389b698">

#### Temp Account Info Page
<img width="1461" alt="Screenshot 2024-08-02 at 11 00 28 AM"
src="https://github.com/user-attachments/assets/7e96360d-a878-4e63-b3f6-cca29d0bd79f">

#### Temp Account Sign In
<img width="1461" alt="Screenshot 2024-08-02 at 11 00 44 AM"
src="https://github.com/user-attachments/assets/f812e72a-7030-4b35-9ac3-3816a056ef55">

#### Bottom Banner
<img width="1462" alt="Screenshot 2024-08-02 at 11 01 02 AM"
src="https://github.com/user-attachments/assets/b5e9d90f-e888-46f1-9bb6-bcc59fe2c6e6">

#### Temp Account Identity Provider
<img width="1461" alt="Screenshot 2024-08-02 at 11 01 35 AM"
src="https://github.com/user-attachments/assets/79b3d7c4-fe3a-45a6-b4de-56d4f2c70f8e">
2024-08-05 15:45:22 +00:00
Jamil
d1703d2849 fix(portal): Use verified routes for OpenAPI docs (#6160)
Removes the hardcoded API link for an VerifiedRoutes version instead.
2024-08-02 19:40:10 +00:00
Jamil
c18d641991 fix(ux): Make all fields live-updated in clients/relays/gateways details pane (#6103)
Updates `Last connected` to `Last started` and makes sure the details
fields are reloaded when presence comes online.
2024-08-02 19:37:52 +00:00