mirror of
https://github.com/bitwarden/browser.git
synced 2024-11-27 12:36:14 +01:00
allow launching URLs without protocol than end with tld
This commit is contained in:
parent
1542dd45d3
commit
e7464785e1
@ -134,7 +134,7 @@ export class ViewComponent implements OnDestroy, OnInit {
|
||||
}
|
||||
|
||||
this.platformUtilsService.eventTrack('Launched Login URI');
|
||||
this.platformUtilsService.launchUri(uri.uri);
|
||||
this.platformUtilsService.launchUri(uri.launchUri);
|
||||
}
|
||||
|
||||
copy(value: string, typeI18nKey: string, aType: string) {
|
||||
|
@ -12,6 +12,7 @@ export class Utils {
|
||||
static isBrowser = true;
|
||||
static isMobileBrowser = false;
|
||||
static global: any = null;
|
||||
static tldEndingRegex = /.*\.(com|net|org|edu|uk|gov|ca|de|jp|fr|au|ru|ch|io|es|us|co|xyz|info|ly|mil)$/;
|
||||
|
||||
static init() {
|
||||
if (Utils.inited) {
|
||||
@ -175,7 +176,13 @@ export class Utils {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (uriString.startsWith('http://') || uriString.startsWith('https://')) {
|
||||
let httpUrl = uriString.startsWith('http://') || uriString.startsWith('https://');
|
||||
if (!httpUrl && Utils.tldEndingRegex.test(uriString)) {
|
||||
uriString = 'http://' + uriString;
|
||||
httpUrl = true;
|
||||
}
|
||||
|
||||
if (httpUrl) {
|
||||
try {
|
||||
const url = Utils.getUrlObject(uriString);
|
||||
if (url.hostname === 'localhost' || Utils.validIpAddress(url.hostname)) {
|
||||
|
@ -70,7 +70,8 @@ export class LoginUriView implements View {
|
||||
}
|
||||
|
||||
get isWebsite(): boolean {
|
||||
return this.uri != null && (this.uri.indexOf('http://') === 0 || this.uri.indexOf('https://') === 0);
|
||||
return this.uri != null && (this.uri.indexOf('http://') === 0 || this.uri.indexOf('https://') === 0 ||
|
||||
(this.uri.indexOf('://') < 0 && Utils.tldEndingRegex.test(this.uri)));
|
||||
}
|
||||
|
||||
get canLaunch(): boolean {
|
||||
@ -78,8 +79,9 @@ export class LoginUriView implements View {
|
||||
return this._canLaunch;
|
||||
}
|
||||
if (this.uri != null) {
|
||||
const uri = this.launchUri;
|
||||
for (let i = 0; i < CanLaunchWhitelist.length; i++) {
|
||||
if (this.uri.indexOf(CanLaunchWhitelist[i]) === 0) {
|
||||
if (uri.indexOf(CanLaunchWhitelist[i]) === 0) {
|
||||
this._canLaunch = true;
|
||||
return this._canLaunch;
|
||||
}
|
||||
@ -88,4 +90,8 @@ export class LoginUriView implements View {
|
||||
this._canLaunch = false;
|
||||
return this._canLaunch;
|
||||
}
|
||||
|
||||
get launchUri(): string {
|
||||
return this.uri.indexOf('://') < 0 && Utils.tldEndingRegex.test(this.uri) ? ('http://' + this.uri) : this.uri;
|
||||
}
|
||||
}
|
||||
|
@ -34,6 +34,10 @@ export class LoginView implements View {
|
||||
return this.hasUris && this.uris[0].canLaunch;
|
||||
}
|
||||
|
||||
get launchUri(): string {
|
||||
return this.canLaunch ? this.uris[0].launchUri : null;
|
||||
}
|
||||
|
||||
get hasUris(): boolean {
|
||||
return this.uris != null && this.uris.length > 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user