* Check if device is trusted
* Move `TrustedDeviceRequirement` enum to a separate file and generate TS definitions for it
Generating TS definitions for the entire legacy/types/types.proto would result in 50K lines of generated code, and the bundle size would increase by ~20% (around 1 MB).
* Extract function to calculate device trust requirement that can be used both by the server and the client
Important: it now uses `GetEnforcementMode` instead of `GetEffectiveMode`. The check for OSS module is performed on the server-side anyway.
* Check what is device trust requirement based on cluster config and user roles
* Show device trust status in UI
* Remove `types.` prefix
* Improve godocs
* Bring back `getRoles func() ([]types.Role, error)`
* Simplify `TestHasDeviceTrustExtensions`
* Clean up and improve `TestCalculateTrustedDeviceRequirement`
* Move `CalculateTrustedDeviceRequirement` and tests to a separate file
* Add colors to shield icons
* Declare variables where they are used
* Extract a component to display device trust status for better readability
* Correctly reference `lib/client.ProfileStatus.Extensions`
* Set group limit to 8
* Make `switch` exhaustive
* Regenerate protos
* `make fix-license`
* Expose device verification methods in lib/devicetrust/authz
* Set device fields in auth.Context.GetAccessState
* Enable role-based device verification for SSH
* Enable role-based device verification for DBs
* Add TODO for better SSH error messages
* Do not override device error on lib/kube/proxy
* Run gci
Add device-aware authorization for SSH access, including both long-lived and
single-use certificates.
If the device trust mode is set to "required", then the presence of the
corresponding extensions is enforced. (Requires Teleport Enterprise.)
Adds logic related to TLS validation and single-use certificates as well, where
appropriate. TLS device-aware validation is not wired into Teleport yet, but
will be in follow up PRs.
gravitational/teleport.e#514