Autolock UI

This commit is contained in:
Mo Bitar
2018-11-14 14:06:23 -06:00
parent 091f4cff7f
commit bb8140d89c
7 changed files with 911 additions and 28 deletions

View File

@@ -380,7 +380,6 @@ class AccountMenu {
passcodeManager.getAutoLockInterval().then((interval) => {
$timeout(() => {
$scope.selectedAutoLockInterval = interval;
console.log("selectedAutoLockInterval", $scope.selectedAutoLockInterval);
})
})
}
@@ -407,10 +406,10 @@ class AccountMenu {
return;
}
let fn = $scope.formData.changingPasscode ? passcodeManager.changePasscode : passcodeManager.setPasscode;
let fn = $scope.formData.changingPasscode ? passcodeManager.changePasscode.bind(passcodeManager) : passcodeManager.setPasscode.bind(passcodeManager);
fn(passcode, () => {
$timeout(function(){
$timeout(() => {
$scope.formData.showPasscodeForm = false;
var offline = authManager.offline();

View File

@@ -1,7 +1,8 @@
class PasscodeManager {
constructor(authManager, storageManager) {
document.addEventListener('visibilitychange', () => {
document.addEventListener('visibilitychange', (e) => {
console.log("visibilitychange", e, document.visibilityState);
this.documentVisibilityChanged(document.visibilityState);
});
@@ -13,6 +14,7 @@ class PasscodeManager {
const MillisecondsPerSecond = 1000;
PasscodeManager.AutoLockIntervalNone = 0;
PasscodeManager.AutoLockIntervalFiveSecs = 5 * MillisecondsPerSecond;
PasscodeManager.AutoLockIntervalOneMinute = 60 * MillisecondsPerSecond;
PasscodeManager.AutoLockIntervalFiveMinutes = 300 * MillisecondsPerSecond;
PasscodeManager.AutoLockIntervalOneHour = 3600 * MillisecondsPerSecond;
@@ -26,6 +28,10 @@ class PasscodeManager {
value: PasscodeManager.AutoLockIntervalNone,
label: "None"
},
{
value: PasscodeManager.AutoLockIntervalFiveSecs,
label: "5 Secs"
},
{
value: PasscodeManager.AutoLockIntervalOneMinute,
label: "1 Min"
@@ -51,20 +57,21 @@ class PasscodeManager {
}
async beginAutoLockTimer() {
console.log("beginAutoLockTimer");
var interval = await this.getAutoLockInterval();
if(interval == PasscodeManager.AutoLockIntervalNone) {
return;
}
this.lockTimeout = setTimeout(() => {
this.lockApplication();
}, interval);
}
cancelAutoLockTimer() {
console.log("cancelAutoLockTimer");
clearTimeout(this.lockTimeout);
}
lockApplication() {
console.log("lockApplication");
window.location.reload();
this.cancelAutoLockTimer();
}
@@ -82,14 +89,16 @@ class PasscodeManager {
}
async setAutoLockInterval(interval) {
console.log("Set autolock interval", interval);
return this.storageManager.setItem(PasscodeManager.AutoLockIntervalKey, JSON.stringify(interval), StorageManager.Fixed);
}
async getAutoLockInterval() {
let interval = await this.storageManager.getItem(PasscodeManager.AutoLockIntervalKey, StorageManager.Fixed);
console.log("Got interval", interval);
return interval && JSON.parse(interval);
if(interval) {
return JSON.parse(interval);
} else {
return PasscodeManager.AutoLockIntervalNone;
}
}
passcodeAuthParams() {

View File

@@ -83,7 +83,7 @@ class PrivilegesManager {
resolve(resolvedSingleton);
}, (valueCallback) => {
// Safe to create. Create and return object.
var privs = new Privilege({content_type: prefsContentType});
var privs = new SNPrivileges({content_type: prefsContentType});
this.modelManager.addItem(privs);
privs.setDirty(true);
this.$rootScope.sync();

View File

@@ -132,10 +132,12 @@
%a.danger{"ng-click" => "removePasscodePressed()"} Remove Passcode
.panel-row
.horizontal-group
%p Autolock:
%h4 Autolock
.vertical-rule
%a.info{"ng-repeat" => "option in passcodeAutoLockOptions", "ng-click" => "selectAutoLockInterval(option.value)",
"ng-class" => "{'info bold' : option.value == selectedAutoLockInterval}"}
"ng-class" => "{'info boxed' : option.value == selectedAutoLockInterval}"}
{{option.label}}
%p The autolock timer begins when the window or tab loses focus.
.panel-section{"ng-if" => "!importData.loading"}

View File

@@ -22,12 +22,13 @@
%input{"type" => "checkbox", "ng-checked" => "isCredentialRequiredForAction(action, credential)", "ng-click" => "checkboxValueChanged(action, credential)"}
.footer
%h2 About Privileges
%p
Privileges represent interface level authentication for accessing certain items and features.
Note that when your application is unlocked, your data exists in temporary memory in an unencrypted state.
Privileges are meant to protect against unwanted access in the event of an unlocked application, but do not affect data encryption state.
%p
Privileges sync across your other devices (not including mobile); however, note that if you require
a "Local Passcode" privilege, and another device does not have a local passcode set up, the local passcode
requirement will be ignored on that device.
.panel-section.no-bottom-pad
.text-content
%p
Privileges represent interface level authentication for accessing certain items and features.
Note that when your application is unlocked, your data exists in temporary memory in an unencrypted state.
Privileges are meant to protect against unwanted access in the event of an unlocked application, but do not affect data encryption state.
%p
Privileges sync across your other devices (not including mobile); however, note that if you require
a "Local Passcode" privilege, and another device does not have a local passcode set up, the local passcode
requirement will be ignored on that device.

882
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "standard-notes-web",
"version": "2.3.16",
"version": "2.3.17",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -7728,10 +7728,882 @@
"dev": true
},
"sn-stylekit": {
"version": "1.0.15",
"resolved": "https://registry.npmjs.org/sn-stylekit/-/sn-stylekit-1.0.15.tgz",
"integrity": "sha512-QeWlaCMHtF/VhFWWICzmx39ger92DEj1uLiCW4VVLX9LtU7nKQ5plqHgrpvnctO+wNh9LIYdPBLLWxTwgXm6Eg==",
"dev": true
"version": "file:../Stylekit",
"dev": true,
"dependencies": {
"abbrev": {
"version": "1.1.1",
"bundled": true
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true
},
"ansi-styles": {
"version": "2.2.1",
"bundled": true
},
"argparse": {
"version": "1.0.9",
"bundled": true,
"requires": {
"sprintf-js": "~1.0.2"
}
},
"array-find-index": {
"version": "1.0.2",
"bundled": true
},
"async": {
"version": "1.5.2",
"bundled": true
},
"balanced-match": {
"version": "1.0.0",
"bundled": true
},
"body-parser": {
"version": "1.14.2",
"bundled": true,
"requires": {
"bytes": "2.2.0",
"content-type": "~1.0.1",
"debug": "~2.2.0",
"depd": "~1.1.0",
"http-errors": "~1.3.1",
"iconv-lite": "0.4.13",
"on-finished": "~2.3.0",
"qs": "5.2.0",
"raw-body": "~2.1.5",
"type-is": "~1.6.10"
},
"dependencies": {
"debug": {
"version": "2.2.0",
"bundled": true,
"requires": {
"ms": "0.7.1"
}
},
"iconv-lite": {
"version": "0.4.13",
"bundled": true
},
"ms": {
"version": "0.7.1",
"bundled": true
},
"qs": {
"version": "5.2.0",
"bundled": true
}
}
},
"brace-expansion": {
"version": "1.1.8",
"bundled": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"builtin-modules": {
"version": "1.1.1",
"bundled": true
},
"bytes": {
"version": "2.2.0",
"bundled": true
},
"camelcase": {
"version": "2.1.1",
"bundled": true
},
"camelcase-keys": {
"version": "2.1.0",
"bundled": true,
"requires": {
"camelcase": "^2.0.0",
"map-obj": "^1.0.0"
}
},
"chalk": {
"version": "1.1.3",
"bundled": true,
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
}
},
"coffee-script": {
"version": "1.10.0",
"bundled": true
},
"colors": {
"version": "1.1.2",
"bundled": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true
},
"content-type": {
"version": "1.0.4",
"bundled": true
},
"cross-spawn": {
"version": "0.2.9",
"bundled": true,
"requires": {
"lru-cache": "^2.5.0"
}
},
"currently-unhandled": {
"version": "0.4.1",
"bundled": true,
"requires": {
"array-find-index": "^1.0.1"
}
},
"dargs": {
"version": "4.1.0",
"bundled": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"dateformat": {
"version": "1.0.12",
"bundled": true,
"requires": {
"get-stdin": "^4.0.1",
"meow": "^3.3.0"
}
},
"decamelize": {
"version": "1.2.0",
"bundled": true
},
"depd": {
"version": "1.1.1",
"bundled": true
},
"ee-first": {
"version": "1.1.1",
"bundled": true
},
"error-ex": {
"version": "1.3.1",
"bundled": true,
"requires": {
"is-arrayish": "^0.2.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"bundled": true
},
"esprima": {
"version": "2.7.3",
"bundled": true
},
"eventemitter2": {
"version": "0.4.14",
"bundled": true
},
"exit": {
"version": "0.1.2",
"bundled": true
},
"faye-websocket": {
"version": "0.10.0",
"bundled": true,
"requires": {
"websocket-driver": ">=0.5.1"
}
},
"find-up": {
"version": "1.1.2",
"bundled": true,
"requires": {
"path-exists": "^2.0.0",
"pinkie-promise": "^2.0.0"
}
},
"findup-sync": {
"version": "0.3.0",
"bundled": true,
"requires": {
"glob": "~5.0.0"
},
"dependencies": {
"glob": {
"version": "5.0.15",
"bundled": true,
"requires": {
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "2 || 3",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
}
}
},
"fs.realpath": {
"version": "1.0.0",
"bundled": true
},
"gaze": {
"version": "1.1.2",
"bundled": true,
"requires": {
"globule": "^1.0.0"
}
},
"get-stdin": {
"version": "4.0.1",
"bundled": true
},
"getobject": {
"version": "0.1.0",
"bundled": true
},
"glob": {
"version": "7.1.2",
"bundled": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"globule": {
"version": "1.2.0",
"bundled": true,
"requires": {
"glob": "~7.1.1",
"lodash": "~4.17.4",
"minimatch": "~3.0.2"
}
},
"graceful-fs": {
"version": "4.1.11",
"bundled": true
},
"grunt": {
"version": "1.0.1",
"bundled": true,
"requires": {
"coffee-script": "~1.10.0",
"dateformat": "~1.0.12",
"eventemitter2": "~0.4.13",
"exit": "~0.1.1",
"findup-sync": "~0.3.0",
"glob": "~7.0.0",
"grunt-cli": "~1.2.0",
"grunt-known-options": "~1.1.0",
"grunt-legacy-log": "~1.0.0",
"grunt-legacy-util": "~1.0.0",
"iconv-lite": "~0.4.13",
"js-yaml": "~3.5.2",
"minimatch": "~3.0.0",
"nopt": "~3.0.6",
"path-is-absolute": "~1.0.0",
"rimraf": "~2.2.8"
},
"dependencies": {
"glob": {
"version": "7.0.6",
"bundled": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.2",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"grunt-cli": {
"version": "1.2.0",
"bundled": true,
"requires": {
"findup-sync": "~0.3.0",
"grunt-known-options": "~1.1.0",
"nopt": "~3.0.6",
"resolve": "~1.1.0"
}
}
}
},
"grunt-contrib-sass": {
"version": "1.0.0",
"bundled": true,
"requires": {
"async": "^0.9.0",
"chalk": "^1.0.0",
"cross-spawn": "^0.2.3",
"dargs": "^4.0.0",
"which": "^1.0.5"
},
"dependencies": {
"async": {
"version": "0.9.2",
"bundled": true
}
}
},
"grunt-contrib-watch": {
"version": "1.0.0",
"bundled": true,
"requires": {
"async": "^1.5.0",
"gaze": "^1.0.0",
"lodash": "^3.10.1",
"tiny-lr": "^0.2.1"
},
"dependencies": {
"lodash": {
"version": "3.10.1",
"bundled": true
}
}
},
"grunt-haml2html": {
"version": "0.3.1",
"bundled": true,
"requires": {
"dargs": "~0.1.0"
},
"dependencies": {
"dargs": {
"version": "0.1.0",
"bundled": true
}
}
},
"grunt-known-options": {
"version": "1.1.0",
"bundled": true
},
"grunt-legacy-log": {
"version": "1.0.0",
"bundled": true,
"requires": {
"colors": "~1.1.2",
"grunt-legacy-log-utils": "~1.0.0",
"hooker": "~0.2.3",
"lodash": "~3.10.1",
"underscore.string": "~3.2.3"
},
"dependencies": {
"lodash": {
"version": "3.10.1",
"bundled": true
}
}
},
"grunt-legacy-log-utils": {
"version": "1.0.0",
"bundled": true,
"requires": {
"chalk": "~1.1.1",
"lodash": "~4.3.0"
},
"dependencies": {
"lodash": {
"version": "4.3.0",
"bundled": true
}
}
},
"grunt-legacy-util": {
"version": "1.0.0",
"bundled": true,
"requires": {
"async": "~1.5.2",
"exit": "~0.1.1",
"getobject": "~0.1.0",
"hooker": "~0.2.3",
"lodash": "~4.3.0",
"underscore.string": "~3.2.3",
"which": "~1.2.1"
},
"dependencies": {
"lodash": {
"version": "4.3.0",
"bundled": true
}
}
},
"grunt-newer": {
"version": "1.3.0",
"bundled": true,
"requires": {
"async": "^1.5.2",
"rimraf": "^2.5.2"
},
"dependencies": {
"rimraf": {
"version": "2.6.2",
"bundled": true,
"requires": {
"glob": "^7.0.5"
}
}
}
},
"has-ansi": {
"version": "2.0.0",
"bundled": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"hooker": {
"version": "0.2.3",
"bundled": true
},
"hosted-git-info": {
"version": "2.5.0",
"bundled": true
},
"http-errors": {
"version": "1.3.1",
"bundled": true,
"requires": {
"inherits": "~2.0.1",
"statuses": "1"
}
},
"http-parser-js": {
"version": "0.4.9",
"bundled": true
},
"iconv-lite": {
"version": "0.4.19",
"bundled": true
},
"indent-string": {
"version": "2.1.0",
"bundled": true,
"requires": {
"repeating": "^2.0.0"
}
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.3",
"bundled": true
},
"is-arrayish": {
"version": "0.2.1",
"bundled": true
},
"is-builtin-module": {
"version": "1.0.0",
"bundled": true,
"requires": {
"builtin-modules": "^1.0.0"
}
},
"is-finite": {
"version": "1.0.2",
"bundled": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"is-utf8": {
"version": "0.2.1",
"bundled": true
},
"isexe": {
"version": "2.0.0",
"bundled": true
},
"js-yaml": {
"version": "3.5.5",
"bundled": true,
"requires": {
"argparse": "^1.0.2",
"esprima": "^2.6.0"
}
},
"livereload-js": {
"version": "2.2.2",
"bundled": true
},
"load-json-file": {
"version": "1.1.0",
"bundled": true,
"requires": {
"graceful-fs": "^4.1.2",
"parse-json": "^2.2.0",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0",
"strip-bom": "^2.0.0"
}
},
"lodash": {
"version": "4.17.4",
"bundled": true
},
"loud-rejection": {
"version": "1.6.0",
"bundled": true,
"requires": {
"currently-unhandled": "^0.4.1",
"signal-exit": "^3.0.0"
}
},
"lru-cache": {
"version": "2.7.3",
"bundled": true
},
"map-obj": {
"version": "1.0.1",
"bundled": true
},
"media-typer": {
"version": "0.3.0",
"bundled": true
},
"meow": {
"version": "3.7.0",
"bundled": true,
"requires": {
"camelcase-keys": "^2.0.0",
"decamelize": "^1.1.2",
"loud-rejection": "^1.0.0",
"map-obj": "^1.0.1",
"minimist": "^1.1.3",
"normalize-package-data": "^2.3.4",
"object-assign": "^4.0.1",
"read-pkg-up": "^1.0.1",
"redent": "^1.0.0",
"trim-newlines": "^1.0.0"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"bundled": true
}
}
},
"mime-db": {
"version": "1.30.0",
"bundled": true
},
"mime-types": {
"version": "2.1.17",
"bundled": true,
"requires": {
"mime-db": "~1.30.0"
}
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"nopt": {
"version": "3.0.6",
"bundled": true,
"requires": {
"abbrev": "1"
}
},
"normalize-package-data": {
"version": "2.4.0",
"bundled": true,
"requires": {
"hosted-git-info": "^2.1.4",
"is-builtin-module": "^1.0.0",
"semver": "2 || 3 || 4 || 5",
"validate-npm-package-license": "^3.0.1"
}
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true
},
"object-assign": {
"version": "4.1.1",
"bundled": true
},
"on-finished": {
"version": "2.3.0",
"bundled": true,
"requires": {
"ee-first": "1.1.1"
}
},
"once": {
"version": "1.4.0",
"bundled": true,
"requires": {
"wrappy": "1"
}
},
"parse-json": {
"version": "2.2.0",
"bundled": true,
"requires": {
"error-ex": "^1.2.0"
}
},
"parseurl": {
"version": "1.3.2",
"bundled": true
},
"path-exists": {
"version": "2.1.0",
"bundled": true,
"requires": {
"pinkie-promise": "^2.0.0"
}
},
"path-is-absolute": {
"version": "1.0.1",
"bundled": true
},
"path-type": {
"version": "1.1.0",
"bundled": true,
"requires": {
"graceful-fs": "^4.1.2",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0"
}
},
"pify": {
"version": "2.3.0",
"bundled": true
},
"pinkie": {
"version": "2.0.4",
"bundled": true
},
"pinkie-promise": {
"version": "2.0.1",
"bundled": true,
"requires": {
"pinkie": "^2.0.0"
}
},
"qs": {
"version": "5.1.0",
"bundled": true
},
"raw-body": {
"version": "2.1.7",
"bundled": true,
"requires": {
"bytes": "2.4.0",
"iconv-lite": "0.4.13",
"unpipe": "1.0.0"
},
"dependencies": {
"bytes": {
"version": "2.4.0",
"bundled": true
},
"iconv-lite": {
"version": "0.4.13",
"bundled": true
}
}
},
"read-pkg": {
"version": "1.1.0",
"bundled": true,
"requires": {
"load-json-file": "^1.0.0",
"normalize-package-data": "^2.3.2",
"path-type": "^1.0.0"
}
},
"read-pkg-up": {
"version": "1.0.1",
"bundled": true,
"requires": {
"find-up": "^1.0.0",
"read-pkg": "^1.0.0"
}
},
"redent": {
"version": "1.0.0",
"bundled": true,
"requires": {
"indent-string": "^2.1.0",
"strip-indent": "^1.0.1"
}
},
"repeating": {
"version": "2.0.1",
"bundled": true,
"requires": {
"is-finite": "^1.0.0"
}
},
"resolve": {
"version": "1.1.7",
"bundled": true
},
"rimraf": {
"version": "2.2.8",
"bundled": true
},
"semver": {
"version": "5.4.1",
"bundled": true
},
"signal-exit": {
"version": "3.0.2",
"bundled": true
},
"spdx-correct": {
"version": "1.0.2",
"bundled": true,
"requires": {
"spdx-license-ids": "^1.0.2"
}
},
"spdx-expression-parse": {
"version": "1.0.4",
"bundled": true
},
"spdx-license-ids": {
"version": "1.2.2",
"bundled": true
},
"sprintf-js": {
"version": "1.0.3",
"bundled": true
},
"statuses": {
"version": "1.4.0",
"bundled": true
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"strip-bom": {
"version": "2.0.0",
"bundled": true,
"requires": {
"is-utf8": "^0.2.0"
}
},
"strip-indent": {
"version": "1.0.1",
"bundled": true,
"requires": {
"get-stdin": "^4.0.1"
}
},
"supports-color": {
"version": "2.0.0",
"bundled": true
},
"tiny-lr": {
"version": "0.2.1",
"bundled": true,
"requires": {
"body-parser": "~1.14.0",
"debug": "~2.2.0",
"faye-websocket": "~0.10.0",
"livereload-js": "^2.2.0",
"parseurl": "~1.3.0",
"qs": "~5.1.0"
},
"dependencies": {
"debug": {
"version": "2.2.0",
"bundled": true,
"requires": {
"ms": "0.7.1"
}
},
"ms": {
"version": "0.7.1",
"bundled": true
}
}
},
"trim-newlines": {
"version": "1.0.0",
"bundled": true
},
"type-is": {
"version": "1.6.15",
"bundled": true,
"requires": {
"media-typer": "0.3.0",
"mime-types": "~2.1.15"
}
},
"underscore.string": {
"version": "3.2.3",
"bundled": true
},
"unpipe": {
"version": "1.0.0",
"bundled": true
},
"validate-npm-package-license": {
"version": "3.0.1",
"bundled": true,
"requires": {
"spdx-correct": "~1.0.0",
"spdx-expression-parse": "~1.0.0"
}
},
"websocket-driver": {
"version": "0.7.0",
"bundled": true,
"requires": {
"http-parser-js": ">=0.4.0",
"websocket-extensions": ">=0.1.1"
}
},
"websocket-extensions": {
"version": "0.1.2",
"bundled": true
},
"which": {
"version": "1.2.14",
"bundled": true,
"requires": {
"isexe": "^2.0.0"
}
},
"wrappy": {
"version": "1.0.2",
"bundled": true
}
}
},
"snake-case": {
"version": "2.1.0",

View File

@@ -44,7 +44,7 @@
"mocha": "^5.2.0",
"serve-static": "^1.13.2",
"sn-models": "0.1.9",
"sn-stylekit": "1.0.15",
"sn-stylekit": "file:~/Desktop/sn/dev/Stylekit",
"standard-file-js": "0.3.19"
}
}