mirror of
https://github.com/bitwarden/web
synced 2025-12-21 18:53:38 +00:00
Update 2018-02-21T04:31:38.188Z
This commit is contained in:
@@ -63,7 +63,8 @@
|
|||||||
</p>
|
</p>
|
||||||
<div class="form-group" show-errors>
|
<div class="form-group" show-errors>
|
||||||
<label for="code" class="sr-only">Token</label>
|
<label for="code" class="sr-only">Token</label>
|
||||||
<input type="password" id="code" name="Token" class="form-control" ng-model="token" required api-field />
|
<input type="password" id="code" name="Token" class="form-control" ng-model="token"
|
||||||
|
autocomplete="new-password" required api-field />
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-7">
|
<div class="col-xs-7">
|
||||||
|
|||||||
@@ -116,7 +116,7 @@
|
|||||||
Loading...
|
Loading...
|
||||||
</div>
|
</div>
|
||||||
<div ng-show="!loading">
|
<div ng-show="!loading">
|
||||||
You plan currently has a total of <b>{{plan.seats}}</b> seats.
|
Your plan currently has a total of <b>{{plan.seats}}</b> seats.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-footer" ng-if="!selfHosted && !noSubscription && canAdjustSeats">
|
<div class="box-footer" ng-if="!selfHosted && !noSubscription && canAdjustSeats">
|
||||||
@@ -134,7 +134,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="box-body">
|
<div class="box-body">
|
||||||
<p>
|
<p>
|
||||||
You plan has a total of {{storage.maxGb}} GB of encrypted file storage.
|
Your plan has a total of {{storage.maxGb}} GB of encrypted file storage.
|
||||||
You are currently using {{storage.currentName}}.
|
You are currently using {{storage.currentName}}.
|
||||||
</p>
|
</p>
|
||||||
<div class="progress" style="margin: 0;">
|
<div class="progress" style="margin: 0;">
|
||||||
|
|||||||
@@ -96,7 +96,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="box-body">
|
<div class="box-body">
|
||||||
<p>
|
<p>
|
||||||
You membership has a total of {{storage.maxGb}} GB of encrypted file storage.
|
Your membership has a total of {{storage.maxGb}} GB of encrypted file storage.
|
||||||
You are currently using {{storage.currentName}}.
|
You are currently using {{storage.currentName}}.
|
||||||
</p>
|
</p>
|
||||||
<div class="progress" style="margin: 0;">
|
<div class="progress" style="margin: 0;">
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
<div class="form-group" show-errors>
|
<div class="form-group" show-errors>
|
||||||
<label for="skey">Secret Key</label>
|
<label for="skey">Secret Key</label>
|
||||||
<input type="password" id="skey" name="SecretKey" ng-model="updateModel.skey" class="form-control"
|
<input type="password" id="skey" name="SecretKey" ng-model="updateModel.skey" class="form-control"
|
||||||
required api-field />
|
required api-field autocomplete="new-password" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" show-errors>
|
<div class="form-group" show-errors>
|
||||||
<label for="host">API Hostname</label>
|
<label for="host">API Hostname</label>
|
||||||
|
|||||||
@@ -77,7 +77,7 @@
|
|||||||
{{updateModel.key1.existingKey}}
|
{{updateModel.key1.existingKey}}
|
||||||
</div>
|
</div>
|
||||||
<input type="password" id="key1" name="Key1" ng-model="updateModel.key1.key" class="form-control" api-field
|
<input type="password" id="key1" name="Key1" ng-model="updateModel.key1.key" class="form-control" api-field
|
||||||
ng-show="!updateModel.key1.existingKey" />
|
ng-show="!updateModel.key1.existingKey" autocomplete="new-password" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" show-errors>
|
<div class="form-group" show-errors>
|
||||||
<label for="key2">YubiKey #2</label>
|
<label for="key2">YubiKey #2</label>
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
{{updateModel.key2.existingKey}}
|
{{updateModel.key2.existingKey}}
|
||||||
</div>
|
</div>
|
||||||
<input type="password" id="key2" name="Key2" ng-model="updateModel.key2.key" class="form-control" api-field
|
<input type="password" id="key2" name="Key2" ng-model="updateModel.key2.key" class="form-control" api-field
|
||||||
ng-show="!updateModel.key2.existingKey" />
|
ng-show="!updateModel.key2.existingKey" autocomplete="new-password" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" show-errors>
|
<div class="form-group" show-errors>
|
||||||
<label for="key3">YubiKey #3</label>
|
<label for="key3">YubiKey #3</label>
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
{{updateModel.key3.existingKey}}
|
{{updateModel.key3.existingKey}}
|
||||||
</div>
|
</div>
|
||||||
<input type="password" id="key3" name="Key3" ng-model="updateModel.key3.key" class="form-control" api-field
|
<input type="password" id="key3" name="Key3" ng-model="updateModel.key3.key" class="form-control" api-field
|
||||||
ng-show="!updateModel.key3.existingKey" />
|
ng-show="!updateModel.key3.existingKey" autocomplete="new-password" />
|
||||||
</div>
|
</div>
|
||||||
<strong>NFC Support</strong>
|
<strong>NFC Support</strong>
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
|
|||||||
@@ -87,7 +87,8 @@
|
|||||||
<label for="password">Password</label>
|
<label for="password">Password</label>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="password" id="password" name="Login.Password" ng-model="cipher.login.password"
|
<input type="password" id="password" name="Login.Password" ng-model="cipher.login.password"
|
||||||
class="form-control monospaced" ng-readonly="readOnly" api-field />
|
class="form-control monospaced" ng-readonly="readOnly" api-field
|
||||||
|
autocomplete="new-password" />
|
||||||
<span class="input-group-btn" uib-tooltip="Copy Password" tooltip-placement="left">
|
<span class="input-group-btn" uib-tooltip="Copy Password" tooltip-placement="left">
|
||||||
<button class="btn btn-default btn-flat" type="button" ngclipboard
|
<button class="btn btn-default btn-flat" type="button" ngclipboard
|
||||||
ngclipboard-success="clipboardSuccess(e)" ngclipboard-error="clipboardError(e, true)"
|
ngclipboard-success="clipboardSuccess(e)" ngclipboard-error="clipboardError(e, true)"
|
||||||
|
|||||||
@@ -79,7 +79,8 @@
|
|||||||
<label for="password">Password</label>
|
<label for="password">Password</label>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="password" id="password" name="Login.Password" ng-model="cipher.login.password"
|
<input type="password" id="password" name="Login.Password" ng-model="cipher.login.password"
|
||||||
class="form-control monospaced" ng-readonly="readOnly" api-field />
|
class="form-control monospaced" ng-readonly="readOnly" api-field
|
||||||
|
autocomplete="new-password" />
|
||||||
<span class="input-group-btn" uib-tooltip="Copy Password" tooltip-placement="left">
|
<span class="input-group-btn" uib-tooltip="Copy Password" tooltip-placement="left">
|
||||||
<button class="btn btn-default btn-flat" type="button" ngclipboard
|
<button class="btn btn-default btn-flat" type="button" ngclipboard
|
||||||
ngclipboard-success="clipboardSuccess(e)" ngclipboard-error="clipboardError(e, true)"
|
ngclipboard-success="clipboardSuccess(e)" ngclipboard-error="clipboardError(e, true)"
|
||||||
|
|||||||
@@ -26,47 +26,6 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<script src="js/duo.js"></script>
|
<script src="js/duo.js"></script>
|
||||||
<script>
|
<script src="js/duo-connector.js"></script>
|
||||||
!(function () {
|
|
||||||
var frameElement = document.createElement('iframe');
|
|
||||||
frameElement.setAttribute('id', 'duo_iframe');
|
|
||||||
setFrameHeight();
|
|
||||||
document.body.appendChild(frameElement);
|
|
||||||
|
|
||||||
var hostParam = getQsParam('host');
|
|
||||||
var requestParam = getQsParam('request');
|
|
||||||
Duo.init({
|
|
||||||
host: hostParam,
|
|
||||||
sig_request: requestParam,
|
|
||||||
submit_callback: function (form) {
|
|
||||||
invokeCSCode(form.elements.sig_response.value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
window.onresize = setFrameHeight;
|
|
||||||
function setFrameHeight() {
|
|
||||||
frameElement.style.height = window.innerHeight + 'px';
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
|
|
||||||
function getQsParam(name) {
|
|
||||||
var url = window.location.href;
|
|
||||||
name = name.replace(/[\[\]]/g, '\\$&');
|
|
||||||
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
|
|
||||||
results = regex.exec(url);
|
|
||||||
if (!results) return null;
|
|
||||||
if (!results[2]) return '';
|
|
||||||
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
|
||||||
}
|
|
||||||
|
|
||||||
function invokeCSCode(data) {
|
|
||||||
try {
|
|
||||||
invokeCSharpAction(data);
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
69
index.html
69
index.html
@@ -2,53 +2,6 @@
|
|||||||
<html ng-app="bit" ng-csp>
|
<html ng-app="bit" ng-csp>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta http-equiv="Content-Security-Policy" content="
|
|
||||||
default-src
|
|
||||||
'self';
|
|
||||||
script-src
|
|
||||||
'self'
|
|
||||||
'sha256-ryoU+5+IUZTuUyTElqkrQGBJXr1brEv6r2CA62WUw8w='
|
|
||||||
https://www.google-analytics.com
|
|
||||||
https://js.stripe.com
|
|
||||||
https://js.braintreegateway.com
|
|
||||||
https://www.paypalobjects.com
|
|
||||||
https://maxcdn.bootstrapcdn.com
|
|
||||||
https://ajax.googleapis.com;
|
|
||||||
style-src
|
|
||||||
'self'
|
|
||||||
'unsafe-inline'
|
|
||||||
https://maxcdn.bootstrapcdn.com
|
|
||||||
https://assets.braintreegateway.com
|
|
||||||
https://*.paypal.com
|
|
||||||
https://fonts.googleapis.com;
|
|
||||||
img-src
|
|
||||||
'self'
|
|
||||||
data:
|
|
||||||
https://icons.bitwarden.com
|
|
||||||
https://*.paypal.com
|
|
||||||
https://www.paypalobjects.com
|
|
||||||
https://q.stripe.com
|
|
||||||
https://haveibeenpwned.com
|
|
||||||
https://chart.googleapis.com
|
|
||||||
https://www.google-analytics.com;
|
|
||||||
font-src
|
|
||||||
'self'
|
|
||||||
https://maxcdn.bootstrapcdn.com
|
|
||||||
https://fonts.gstatic.com;
|
|
||||||
child-src
|
|
||||||
'self'
|
|
||||||
https://js.stripe.com
|
|
||||||
https://assets.braintreegateway.com
|
|
||||||
https://*.paypal.com
|
|
||||||
https://*.duosecurity.com;
|
|
||||||
frame-src
|
|
||||||
'self'
|
|
||||||
https://js.stripe.com
|
|
||||||
https://assets.braintreegateway.com
|
|
||||||
https://*.paypal.com
|
|
||||||
https://*.duosecurity.com;
|
|
||||||
connect-src
|
|
||||||
*;">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||||
<meta name="theme-color" content="#3c8dbc">
|
<meta name="theme-color" content="#3c8dbc">
|
||||||
<base href="/" />
|
<base href="/" />
|
||||||
@@ -62,9 +15,9 @@
|
|||||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
|
||||||
integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
|
integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
|
||||||
<meta name="x-stylesheet-test" content="" class="fa invisible" />
|
<meta name="x-stylesheet-test" content="" class="fa invisible" />
|
||||||
<script src="js/fallback-styles.min.js?v=a0gylewuuesrx9u8ilik9"></script>
|
<script src="js/fallback-styles.min.js?v=no5c09"></script>
|
||||||
|
|
||||||
<link rel="stylesheet" href="css/vault.min.css?v=a0gylewuuesrx9u8ilik9" />
|
<link rel="stylesheet" href="css/vault.min.css?v=no5c09" />
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="images/icons/apple-touch-icon.png">
|
<link rel="apple-touch-icon" sizes="180x180" href="images/icons/apple-touch-icon.png">
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="images/icons/favicon-32x32.png">
|
<link rel="icon" type="image/png" sizes="32x32" href="images/icons/favicon-32x32.png">
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="images/icons/favicon-16x16.png">
|
<link rel="icon" type="image/png" sizes="16x16" href="images/icons/favicon-16x16.png">
|
||||||
@@ -76,17 +29,17 @@
|
|||||||
'control-sidebar-open': main.usingControlSidebar && main.openControlSidebar}">
|
'control-sidebar-open': main.usingControlSidebar && main.openControlSidebar}">
|
||||||
<div ui-view></div>
|
<div ui-view></div>
|
||||||
|
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"
|
||||||
integrity="sha384-rY/jv8mMhqDabXSo+UCggqKtdmBfd3qC2/KvyTDNQ6PcUJXaxK1tMepoQda4g5vB" crossorigin="anonymous"></script>
|
integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
|
||||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
|
||||||
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
|
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.3/angular.min.js"
|
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.7/angular.min.js"
|
||||||
integrity="sha384-AH/e+s4V4kUifvnNED2x1XZqArO5qTFU4YKRzUXbz4IgPG1H0Xmz6fP1XUmO4vT/" crossorigin="anonymous"></script>
|
integrity="sha384-R6kAKgTgRiD5889XyzYD/aMryNA4Yr9EBnt6rIXuukLgVONifQDnHNaadrSNakQl" crossorigin="anonymous"></script>
|
||||||
<script src="js/fallback-scripts.min.js?v=a0gylewuuesrx9u8ilik9"></script>
|
<script src="js/fallback-scripts.min.js?v=no5c09"></script>
|
||||||
<script src="js/settings.js?v=a0gylewuuesrx9u8ilik9"></script>
|
<script src="js/settings.js?v=no5c09"></script>
|
||||||
|
|
||||||
<script src="js/lib.min.js?v=a0gylewuuesrx9u8ilik9"></script>
|
<script src="js/lib.min.js?v=no5c09"></script>
|
||||||
<script src="js/bw.min.js?v=a0gylewuuesrx9u8ilik9"></script>
|
<script src="js/bw.min.js?v=no5c09"></script>
|
||||||
<script src="js/app.min.js?v=a0gylewuuesrx9u8ilik9"></script>
|
<script src="js/app.min.js?v=no5c09"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
2
js/app.min.js
vendored
2
js/app.min.js
vendored
File diff suppressed because one or more lines are too long
2
js/bw.min.js
vendored
2
js/bw.min.js
vendored
File diff suppressed because one or more lines are too long
40
js/duo-connector.js
Normal file
40
js/duo-connector.js
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
!(function () {
|
||||||
|
var frameElement = document.createElement('iframe');
|
||||||
|
frameElement.setAttribute('id', 'duo_iframe');
|
||||||
|
setFrameHeight();
|
||||||
|
document.body.appendChild(frameElement);
|
||||||
|
|
||||||
|
var hostParam = getQsParam('host');
|
||||||
|
var requestParam = getQsParam('request');
|
||||||
|
Duo.init({
|
||||||
|
host: hostParam,
|
||||||
|
sig_request: requestParam,
|
||||||
|
submit_callback: function (form) {
|
||||||
|
invokeCSCode(form.elements.sig_response.value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
window.onresize = setFrameHeight;
|
||||||
|
function setFrameHeight() {
|
||||||
|
frameElement.style.height = window.innerHeight + 'px';
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
function getQsParam(name) {
|
||||||
|
var url = window.location.href;
|
||||||
|
name = name.replace(/[\[\]]/g, '\\$&');
|
||||||
|
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
|
||||||
|
results = regex.exec(url);
|
||||||
|
if (!results) return null;
|
||||||
|
if (!results[2]) return '';
|
||||||
|
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
||||||
|
}
|
||||||
|
|
||||||
|
function invokeCSCode(data) {
|
||||||
|
try {
|
||||||
|
invokeCSharpAction(data);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
2
js/fallback-styles.min.js
vendored
2
js/fallback-styles.min.js
vendored
@@ -1 +1 @@
|
|||||||
function loadStylesheetIfMissing(e,t,i){var s=document.getElementsByTagName("SCRIPT"),l=s[s.length-1].previousElementSibling,n=document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(l):l.currentStyle;if(n&&n[e]!==t)for(var o=0;o<i.length;o++)document.write('<link rel="stylesheet" href="'+i[o]+"?v="+cacheTag+'" />')}var cacheTag="a0gylewuuesrx9u8ilik9";loadStylesheetIfMissing("visibility","hidden",["lib/bootstrap/css/bootstrap.min.css"]),loadStylesheetIfMissing("fontFamily","FontAwesome",["lib/font-awesome/css/font-awesome.min.css"]);
|
var cacheTag="no5c09";function loadStylesheetIfMissing(e,t,s){var i=document.getElementsByTagName("SCRIPT"),n=i[i.length-1].previousElementSibling,o=document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(n):n.currentStyle;if(o&&o[e]!==t)for(var l=0;l<s.length;l++)document.write('<link rel="stylesheet" href="'+s[l]+"?v="+cacheTag+'" />')}loadStylesheetIfMissing("visibility","hidden",["lib/bootstrap/css/bootstrap.min.css"]),loadStylesheetIfMissing("fontFamily","FontAwesome",["lib/font-awesome/css/font-awesome.min.css"]);
|
||||||
2
js/lib.min.js
vendored
2
js/lib.min.js
vendored
File diff suppressed because one or more lines are too long
2
js/u2f.min.js
vendored
2
js/u2f.min.js
vendored
File diff suppressed because one or more lines are too long
17
manifest.json
Normal file
17
manifest.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"name": "bitwarden vault",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "images/icons/android-chrome-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "images/icons/android-chrome-512x512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"theme_color": "#3c8dbc",
|
||||||
|
"background_color": "#3c8dbc"
|
||||||
|
}
|
||||||
@@ -5,6 +5,6 @@
|
|||||||
<title>U2F Connector</title>
|
<title>U2F Connector</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<script src="js/u2f.min.js?v=a0gylewuuesrx9u8ilik9"></script>
|
<script src="js/u2f.min.js?v=no5c09"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user