Add custom fields

This commit is contained in:
Sander 2016-09-13 16:31:07 +02:00
parent d8f26f8b5d
commit 19959b1d0a
11 changed files with 185 additions and 40 deletions

View file

@ -223,6 +223,21 @@
float: left; }
.edit_credential .password_settings label .label {
float: left; }
.edit_credential .password_settings label .label.sm {
font-size: 12px; }
.edit_credential .custom_fields {
margin-top: 10px; }
.edit_credential .custom_fields table {
width: 100%; }
.edit_credential .custom_fields table thead th {
background-color: #0082c9;
color: #fff; }
.edit_credential .custom_fields table thead th.field_actions {
width: 15%; }
.edit_credential .custom_fields table tr td.field_actions {
font-size: 13px; }
.edit_credential .custom_fields table tr td, .edit_credential .custom_fields table tr th {
padding: 5px; }
.settings-container div {
padding-left: 15px; }

View file

@ -1,6 +1,6 @@
{
"version": 3,
"mappings": "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",
"mappings": "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",
"sources": ["../sass/container.scss","../sass/mixins.scss","../sass/partials/button.scss","../sass/partials/tabs.scss","../sass/partials/pwgen.scss","../sass/vaults.scss","../sass/credentials.scss","../sass/menu.scss","../sass/app.scss"],
"names": [],
"file": "app.css"

View file

@ -34,10 +34,6 @@ angular.module('passmanApp')
color: 'purple'
}];
$scope.pwGenerated = function(pass){
$scope.storedCredential.password_repeat = pass;
};
$scope.pwSettings = {
'length': 12,
'useUppercase': true,
@ -71,7 +67,7 @@ angular.module('passmanApp')
$location.path('/vault/'+ $routeParams.vault_id);
} else {
$scope.storedCredential = storedCredential;
$scope.storedCredential.password_repeat = storedCredential.password;
$scope.storedCredential.password_repeat = angular.copy(storedCredential.password);
}
@ -88,4 +84,35 @@ angular.module('passmanApp')
$scope.isActiveTab = function (tab) {
return tab.url == $scope.currentTab.url;
};
/**
* Below general edit functions
*/
$scope.pwGenerated = function(pass){
$scope.storedCredential.password_repeat = pass;
};
var _customField = {
label: '',
value: '',
secret: false
};
$scope.new_custom_field = angular.copy(_customField);
$scope.addCustomField = function(){
if(!$scope.new_custom_field.label){
//@TODO move OC.Notification to a service
OC.Notification.showTemporary('Please fill in a label');
}
if(!$scope.new_custom_field.value){
//@TODO move OC.Notification to a service
OC.Notification.showTemporary('Please fill in a value!');
}
if(!$scope.new_custom_field.label || !$scope.new_custom_field.value){
return;
}
$scope.storedCredential.custom_fields.push(angular.copy($scope.new_custom_field));
$scope.new_custom_field = angular.copy(_customField);
}
}]);

View file

@ -144,7 +144,7 @@ angular.module('passmanApp')
scope.$watch("password", function () {
scope.model = scope.password;
scope.password_repeat = scope.model;
scope.callback(scope.password)
if(scope.password !== undefined && scope.password !== null && scope.password !== "") {
scope.passwordNotNull = true;
} else {
@ -153,6 +153,7 @@ angular.module('passmanApp')
});
//
scope.onSuccess = function(e) {
//@TODO move OC.Notification to a service
OC.Notification.showTemporary('Password copied to clipboard!');
e.clearSelection();
};
@ -177,6 +178,7 @@ angular.module('passmanApp')
scope.generatePasswordProgress();
} else {
scope.disabled = false;
scope.callback(scope.password)
}
}, 10);
};

19
js/app/filters/range.js Normal file
View file

@ -0,0 +1,19 @@
'use strict';
/**
* @ngdoc filter
* @name passmanApp.filter:propsFilter
* @function
* @description
* # propsFilter
* Filter in the passmanApp.
*/
angular.module('passmanApp')
.filter('range', function() {
return function(val, range) {
range = parseInt(range);
for (var i=0; i<range; i++)
val.push(i);
return val;
};
});

View file

@ -25,9 +25,9 @@ angular.module('passmanApp')
'favicon': null,
'renew_interval': null,
'expire_time': null,
'delete_time': null,
'files': null,
'custom_fields': null,
'delete_time': 0,
'files': [],
'custom_fields': [],
'otp': null,
'hidden': false
};

View file

@ -17,7 +17,7 @@ angular.module('views/partials/forms/edit_credential/basics.html', []).run(['$te
angular.module('views/partials/forms/edit_credential/custom_fields.html', []).run(['$templateCache', function($templateCache) {
'use strict';
$templateCache.put('views/partials/forms/edit_credential/custom_fields.html',
'');
'<div class="row"><div class="col-xs-4"><label>Field label</label><input type="text" ng-model="new_custom_field.label"></div><div class="col-xs-4"><label>Field value</label><input type="text" ng-model="new_custom_field.value" ng-show="!new_custom_field.secret"> <input type="password" ng-model="new_custom_field.value" ng-show="new_custom_field.secret"><label><input type="checkbox" ng-model="new_custom_field.secret"> Secret value</label></div><div class="col-xs-2"><label class="invisible">Add</label><button ng-click="addCustomField()">+</button></div></div><div class="row custom_fields" ng-if="storedCredential.custom_fields.length > 0"><div class="col-xs-12 table" ng-init="edit = false;"><table><thead><tr><th class="field_label">Label</th><th class="field_value">Value</th><th class="field_secret">Secret value</th><th class="field_actions">Actions</th></tr></thead><tr ng-repeat="field in storedCredential.custom_fields"><td><span ng-show="!edit">{{field.label}}</span> <input ng-model="field.label" type="text" ng-show="edit"></td><td><span ng-if="!field.secret && !edit">{{field.value}}</span> <span ng-if="field.secret && !edit"><span ng-repeat="n in [] | range:field.value.length">*</span></span> <input ng-model="field.value" type="text" ng-show="edit && !secret"> <input ng-model="field.value" type="text" ng-show="edit && secret"></td><td><input type="checkbox" ng-model="field.secret"></td><td class="field_actions"><i class="fa fa-edit" ng-click="edit = true"></i> <i class="fa fa-trash"></i></td></tr></table></div></div>');
}]);
angular.module('views/partials/forms/edit_credential/files.html', []).run(['$templateCache', function($templateCache) {
@ -35,7 +35,7 @@ angular.module('views/partials/forms/edit_credential/otp.html', []).run(['$templ
angular.module('views/partials/forms/edit_credential/password.html', []).run(['$templateCache', function($templateCache) {
'use strict';
$templateCache.put('views/partials/forms/edit_credential/password.html',
'<div class="row"><div class="col-xs-12 col-md-6"><label>Password</label><div><password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen><ng-password-meter password="storedCredential.password"></ng-password-meter></div><label>Repeat password</label><div><input type="text" ng-model="storedCredential.password_repeat"></div><label>Renew interval</label><div></div></div><div class="col-xs-12 col-md-6">Password generation settings<div class="password_settings"><div class="col-xs-12 col-sm-12 col-lg-4"><label><span class="label">Password length</span><br><input type="number" ng-model="pwSettings.length" min="1"></label><label><span class="label">Minimum amount of digits</span><br><input type="number" ng-model="pwSettings.minimumDigitCount" min="0"></label></div><div class="col-xs-12 col-sm-12 col-lg-6"><label><input type="checkbox" ng-model="pwSettings.useUppercase"> <span class="label">Use uppercase letters (ABC)</span></label><label><input ng-model="pwSettings.useLowercase" type="checkbox" id="lower"> <span class="label">Use lowercase letters (abc)</span></label><label><input ng-model="pwSettings.useDigits" type="checkbox" id="digits"> <span class="label">Use numbers (0-9)</span></label><label><input type="checkbox" id="special" ng-model="pwSettings.useSpecialChars"> <span class="label">Use special characters (!@#$)</span></label><label><input type="checkbox" id="ambig" ng-model="pwSettings.avoidAmbiguousCharacters"> <span class="label">Avoid ambiguous characters (i l 0 o )</span></label><label><input type="checkbox" ng-model="pwSettings.requireEveryCharType" id="reqevery"> <span class="label">Require every character type</span></label></div></div></div></div>');
'<div class="row"><div class="col-xs-12 col-md-5 col-lg-5"><label>Password</label><div><password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen><ng-password-meter password="storedCredential.password"></ng-password-meter></div><label>Repeat password</label><div><input type="password" ng-model="storedCredential.password_repeat"></div><label>Renew interval</label><div></div></div><div class="col-xs-12 col-md-7 col-lg-7">Password generation settings<div class="row"><div class="password_settings"><div class="col-xs-12 col-sm-5 col-lg-4"><label><span class="label">Password length</span><br><input type="number" ng-model="pwSettings.length" min="1"></label><label><span class="label">Minimum amount of digits</span><br><input type="number" ng-model="pwSettings.minimumDigitCount" min="0"></label></div><div class="col-xs-12 col-sm-6 col-lg-6"><label><input type="checkbox" ng-model="pwSettings.useUppercase"> <span class="label sm">Use uppercase letters</span></label><label><input ng-model="pwSettings.useLowercase" type="checkbox" id="lower"> <span class="label sm">Use lowercase letters</span></label><label><input ng-model="pwSettings.useDigits" type="checkbox" id="digits"> <span class="label sm">Use numbers</span></label><label><input type="checkbox" id="special" ng-model="pwSettings.useSpecialChars"> <span class="label sm">Use special characters</span></label><label><input type="checkbox" id="ambig" ng-model="pwSettings.avoidAmbiguousCharacters"> <span class="label sm">Avoid ambiguous characters</span></label><label><input type="checkbox" ng-model="pwSettings.requireEveryCharType" id="reqevery"> <span class="label sm">Require every character type</span></label></div></div></div></div></div>');
}]);
angular.module('views/partials/password-meter.html', []).run(['$templateCache', function($templateCache) {

View file

@ -1,26 +1,26 @@
.credential-table{
.credential-table {
width: 100%;
margin-top: 44px;
tr:hover{
tr:hover {
background-color: darken(#fff, 4%);
}
tr{
td{
tr {
td {
cursor: pointer;
padding: 5px;
border-bottom: 1px solid #eeeeee;
.label{
.label {
float: left;
}
.tags{
.tags {
float: right;
.tag{
background-color: rgba(240,240,240,.9);
.tag {
background-color: rgba(240, 240, 240, .9);
padding: 4px;
font-size: 11px;
}
}
.icon-more{
.icon-more {
display: inline-block;
float: right;
margin-left: 5px;
@ -30,7 +30,7 @@
width: 32px;
cursor: pointer;
}
.icon-more:hover{
.icon-more:hover {
opacity: 1;
}
.popovermenu {
@ -43,10 +43,10 @@
display: block;
width: 100px;
height: 75px;
li{
li {
padding: 0px;
}
.menuitem{
.menuitem {
font-size: 12px;
display: inline;
}
@ -59,17 +59,18 @@
}
}
}
.edit_credential {
label{
label {
display: block;
}
input[type="text"],input[type="password"]{
input[type="text"], input[type="password"] {
width: 100%;
}
.tags{
.tags {
float: left;
.tag{
background-color: rgba(240,240,240,.9);
.tag {
background-color: rgba(240, 240, 240, .9);
padding: 4px;
font-size: 11px;
}
@ -86,8 +87,35 @@
float: left;
}
.label {
&.sm{
font-size: 12px;
}
float: left;
}
}
}
.custom_fields {
margin-top: 10px;
table {
width: 100%;
thead {
th {
background-color: #0082c9;
color: #fff;
}
th.field_actions {
width: 15%;
}
}
tr {
td.field_actions {
font-size: 13px;
}
td, th {
padding: 5px;
}
}
}
}
}

View file

@ -24,6 +24,7 @@ script('passman', 'app/controllers/menu');
script('passman', 'app/controllers/vault');
script('passman', 'app/controllers/credential');
script('passman', 'app/controllers/edit_credential');
script('passman', 'app/filters/range');
script('passman', 'app/filters/propsfilter');
script('passman', 'app/services/cacheservice');
script('passman', 'app/services/vaultservice');

View file

@ -0,0 +1,51 @@
<div class="row">
<div class="col-xs-4">
<label>Field label</label>
<input type="text" ng-model="new_custom_field.label">
</div>
<div class="col-xs-4">
<label>Field value</label>
<input type="text" ng-model="new_custom_field.value" ng-show="!new_custom_field.secret">
<input type="password" ng-model="new_custom_field.value" ng-show="new_custom_field.secret">
<label>
<input type="checkbox" ng-model="new_custom_field.secret"> Secret value
</label>
</div>
<div class="col-xs-2">
<label class="invisible">Add</label>
<button ng-click="addCustomField()">+</button>
</div>
</div>
<div class="row custom_fields" ng-if="storedCredential.custom_fields.length > 0">
<div class="col-xs-12 table" ng-init="edit = false;">
<table>
<thead>
<tr>
<th class="field_label">Label</th>
<th class="field_value">Value</th>
<th class="field_secret">Secret value</th>
<th class="field_actions">Actions</th>
</tr>
</thead>
<tr ng-repeat="field in storedCredential.custom_fields">
<td>
<span ng-show="!edit">{{field.label}}</span>
<input ng-model="field.label" type="text" ng-show="edit">
</td>
<td>
<span ng-if="!field.secret && !edit">{{field.value}}</span>
<span ng-if="field.secret && !edit"><span ng-repeat="n in [] | range:field.value.length">*</span></span>
<input ng-model="field.value" type="text" ng-show="edit && !secret">
<input ng-model="field.value" type="text" ng-show="edit && secret">
</td>
<td><input type="checkbox" ng-model="field.secret"></td>
<td class="field_actions">
<i class="fa fa-edit" ng-click ="edit = true"></i>
<i class="fa fa-trash"></i>
</td>
</tr>
</table>
</div>
</div>

View file

@ -1,5 +1,5 @@
<div class="row">
<div class="col-xs-12 col-md-6">
<div class="col-xs-12 col-md-5 col-lg-5">
<label>Password</label>
<div>
@ -10,18 +10,19 @@
</div>
<label>Repeat password</label>
<div>
<input type="text" ng-model="storedCredential.password_repeat">
<input type="password" ng-model="storedCredential.password_repeat">
</div>
<label>Renew interval</label>
<div>
</div>
</div>
<div class="col-xs-12 col-md-6">
<div class="col-xs-12 col-md-7 col-lg-7">
Password generation settings
<div class="row">
<div class="password_settings">
<div class="col-xs-12 col-sm-12 col-lg-4">
<div class="col-xs-12 col-sm-5 col-lg-4">
<label>
<span class="label">Password length</span><br />
<input type="number" ng-model="pwSettings.length" min="1">
@ -33,39 +34,40 @@
</label>
</div>
<div class="col-xs-12 col-sm-12 col-lg-6">
<div class="col-xs-12 col-sm-6 col-lg-6">
<label>
<input type="checkbox"
ng-model="pwSettings.useUppercase">
<span class="label">Use uppercase letters (ABC)</span>
<span class="label sm">Use uppercase letters</span>
</label>
<label>
<input
ng-model="pwSettings.useLowercase" type="checkbox"
id="lower">
<span class="label">Use lowercase letters (abc)</span>
<span class="label sm">Use lowercase letters</span>
</label>
<label>
<input ng-model="pwSettings.useDigits" type="checkbox"
id="digits">
<span class="label">Use numbers (0-9)</span>
<span class="label sm">Use numbers</span>
</label>
<label>
<input type="checkbox" id="special"
ng-model="pwSettings.useSpecialChars">
<span class="label">Use special characters (!@#$)</span>
<span class="label sm">Use special characters</span>
</label>
<label>
<input type="checkbox" id="ambig"
ng-model="pwSettings.avoidAmbiguousCharacters">
<span class="label">Avoid ambiguous characters (i l 0 o )</span>
<span class="label sm">Avoid ambiguous characters</span>
</label>
<label>
<input type="checkbox" ng-model="pwSettings.requireEveryCharType"
id="reqevery">
<span class="label">Require every character type</span>
<span class="label sm">Require every character type</span>
</label>
</div>
</div>
</div>
</div>
</div>