mirror of
https://github.com/bitwarden/browser
synced 2026-02-06 03:33:30 +00:00
* Add PhishingDetectionService
* Add a tab listener.
* Get the known phishing domain from the server
* Get the known phishing domain from the server
* Add phishing detection content script.
* Revert "Add phishing detection content script."
This reverts commit ce64d3435a.
* Fix conflicts
* Add build configs.
* Decouple the phishing detection content script logic from the rest of the app.
* move the call to background
* Add communication between the content script and background service.
* Update code to use Log service.
* Resolve conflict
* Add changes for phishing domain report
* Fix initializer order issue.
* Fix domain error.
* Account for no responses.
* Add exit functionality for onclick.
* Wrapped phishing detection feature behind feature flag (#13915)
* push changes for alert
* Removed browser logic for checking feature flag
* move the alert as dialog
* Add functionality to navigate back in history.
* [PM-19814] Add redirect to warning page when a phishing domain is detected.
* [PM-19814] Add the phishing warning page to the Angular popup.
* [PM-19814] Add functionality to display phishing host.
* [PM-19814] Add exit button and learn more link.
* [PM-19814] Add phishing detection feature flag.
* [PM-19814] Move phishing service to phishing directory
* [PM-19814] Add UI to display phishing URL.
* [PM-19814] Disable the URL input and populate it with the phishing URL.
* [PM-19814] Add phishing icon
* [PM-19814] Temporarily remove phishing reporting feature. It can be released separately in another ticket.
* [PM-19814] Clean up
* [PM-19814] Add types to the handlers.
* [PM-19814] Remove logic for handling authentication since the endpoint will be unauthenticated.
* [PM-19814] Fixed as many type issues as possible; added @ts-strict-ignore to the remaining ones.
* [PM-19814] Fix race condition in feature flag check.
* [PM-19814] Update wording for the marketing request.
* [PM-19814] Move phishing detection check from content script to webRequest.onCompleted listener.
* [PM-19814] Use webNavigation.onCompleted for redirect to ensure that the redirect only happens when they land on the page.
* [PM-19814] Remove unused code.
* [PM-19814] Fix merge conflict and update text based on product owner’s request
* [PM-19814] Fix merge conflict
* [PM-19814] Update text
* Resolve the message catalog entries
* Update file for consistent import and exports
* Update imports
* Update another import for BrowserPopupUtils
* Update the rest of the imports for BrowserPopupUtils
* Updates messages
* Rename files
* Current phishing block changes
* Use globalthis for chrome
* Add types file
* Update browser api to include tab navigation and close tab functions
* Update phishing detection to track multiple tabs and not trust info from content script
* Change chrome to browser.
* Fixed phishing detection checking previous url instead of current on navigation. Updated def flag for testing urls.
* Move phishing icon
* Fix chrome specific issues. Add comments to where BrowserApi should be used
* Fix command errors. Typecheck messages. Added guard for phishing detection messages
* Use concat map instead of merge map
* Unformat webfonts.scss file
* Fix lint and import errors
* Move phishing blocker files to dirt folder
* Rename background folder to services
* Add code ownership for phishing blocker
* Update text to use locales on phishing blocker learn more page
* Change navigation from using webapi to browser on updated event for safari support
* Update icon usage
* Fix type issues and add test file
* Fix linting error in test
---------
Co-authored-by: Jimmy Vo <huynhmaivo82@gmail.com>
Co-authored-by: Cy Okeke <cokeke@bitwarden.com>
Co-authored-by: Conner Turnbull <133619638+cturnbull-bitwarden@users.noreply.github.com>
Co-authored-by: Conner Turnbull <cturnbull@bitwarden.com>
Co-authored-by: cyprain-okeke <108260115+cyprain-okeke@users.noreply.github.com>
Co-authored-by: Tom <144813356+ttalty@users.noreply.github.com>
71 lines
2.2 KiB
TypeScript
71 lines
2.2 KiB
TypeScript
// FIXME: Update this file to be type safe and remove this and next line
|
|
// @ts-strict-ignore
|
|
// required to avoid linting errors when there are no flags
|
|
export type SharedFlags = {
|
|
sdk?: boolean;
|
|
prereleaseBuild?: boolean;
|
|
};
|
|
|
|
// required to avoid linting errors when there are no flags
|
|
export type SharedDevFlags = {
|
|
noopNotifications: boolean;
|
|
skipWelcomeOnInstall: boolean;
|
|
configRetrievalIntervalMs: number;
|
|
showRiskInsightsDebug: boolean;
|
|
testPhishingUrls: string[];
|
|
};
|
|
|
|
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) ?? ({} as 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 ? false : !!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];
|
|
}
|