mirror of
https://github.com/bitwarden/browser
synced 2025-12-18 01:03:35 +00:00
* [SG-171] Login with a device request: Desktop (#3999) * Move LoginWithDeviceComponent to libs * Create login module * Remove login component from previous location * Move startPasswordlessLogin method to base class * Register route for login with device component * Add new localizations * Add Login with Device page styles * Add desktop login with device component * Spacing fix * Add content box around page * Update wording of helper text * Make resend timeout a class variable * SG-173 - Login device approval desktop (#4232) * SG-173 Implemented UI and login for login approval request * SG-173 - Show login approval after login * SG-173 Fetch login requests if the setting is true * SG-173 Add subheading to new setting * SG-173 Handle modal dismiss denying login request * SG-173 Fix pr comments * SG-173 Implemented desktop alerts * SG-173 Replicated behaviour of openViewRef * SG-173 Fixed previous commit * SG-173 PR fix * SG-173 Fix PR comment * SG-173 Added missing service injection * SG-173 Added logo to notifications * SG-173 Fix PR comments * [SG-910] Override self hosted check for desktop (#4405) * Override base component self hosted check * Add selfhost check to environment service * [SG-170] Login with Device Request - Browser (#4198) * work: ui stuff * fix: use parent * fix: words * [SG-987] [SG-988] [SG-989] Fix passwordless login request (#4573) * SG-987 Fix notification text and button options * SG-988 Fix approval and decline confirmation toasts * SG-989 Fix methods called * SG-988 Undo previous commit * [SG-1034] [Defect] - Vault is empty upon login confirmation (#4646) * fix: sync after login * undo: whoops --------- Co-authored-by: Carlos Gonçalves <cgoncalves@bitwarden.com> Co-authored-by: Brandon Maharaj <bmaharaj@bitwarden.com> Co-authored-by: Todd Martin <106564991+trmartin4@users.noreply.github.com>
65 lines
2.1 KiB
TypeScript
65 lines
2.1 KiB
TypeScript
// required to avoid linting errors when there are no flags
|
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
export type SharedFlags = {
|
|
multithreadDecryption: boolean;
|
|
showPasswordless?: boolean;
|
|
};
|
|
|
|
// required to avoid linting errors when there are no flags
|
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
export type SharedDevFlags = {};
|
|
|
|
function getFlags<T>(envFlags: string | T): T {
|
|
if (typeof envFlags === "string") {
|
|
return JSON.parse(envFlags) as T;
|
|
} else {
|
|
return envFlags as T;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Gets the value of a feature flag from environment.
|
|
* All flags default to "on" (true).
|
|
* Only use for shared code in `libs`, otherwise use the client-specific function.
|
|
* @param flag The name of the feature flag to check
|
|
* @returns The value of the flag
|
|
*/
|
|
export function flagEnabled<Flags extends SharedFlags>(flag: keyof Flags): boolean {
|
|
const flags = getFlags<Flags>(process.env.FLAGS);
|
|
return flags[flag] == null || !!flags[flag];
|
|
}
|
|
|
|
/**
|
|
* Gets the value of a dev flag from environment.
|
|
* Will always return false unless in development.
|
|
* Only use for shared code in `libs`, otherwise use the client-specific function.
|
|
* @param flag The name of the dev flag to check
|
|
* @returns The value of the flag
|
|
*/
|
|
export function devFlagEnabled<DevFlags extends SharedDevFlags>(flag: keyof DevFlags): boolean {
|
|
if (process.env.ENV !== "development") {
|
|
return false;
|
|
}
|
|
|
|
const devFlags = getFlags<DevFlags>(process.env.DEV_FLAGS);
|
|
return devFlags[flag] == null || !!devFlags[flag];
|
|
}
|
|
|
|
/**
|
|
* Gets the value of a dev flag from environment.
|
|
* Will always return false unless in development.
|
|
* @param flag The name of the dev flag to check
|
|
* @returns The value of the flag
|
|
* @throws Error if the flag is not enabled
|
|
*/
|
|
export function devFlagValue<DevFlags extends SharedDevFlags>(
|
|
flag: keyof DevFlags
|
|
): DevFlags[keyof DevFlags] {
|
|
if (!devFlagEnabled(flag)) {
|
|
throw new Error(`This method should not be called, it is protected by a disabled dev flag.`);
|
|
}
|
|
|
|
const devFlags = getFlags<DevFlags>(process.env.DEV_FLAGS);
|
|
return devFlags[flag];
|
|
}
|