mirror of
https://github.com/nextcloud/passman.git
synced 2024-09-20 14:56:21 +08:00
Add custom fields
This commit is contained in:
parent
d8f26f8b5d
commit
19959b1d0a
15
css/app.css
15
css/app.css
|
@ -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; }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"version": 3,
|
||||
"mappings": "AAAA,kBAAkB;EAChB,YAAY,EAAE,IAAI;EAClB,0BAAO;IACL,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,KAAK;ICOd,qBAAqB,EDNI,GAAG;ICO5B,aAAa,EDPY,GAAG;ICQ5B,eAAe,EAAE,WAAW;IAAG,qDAAqD;IDPlF,UAAU,EAAE,gCAA+B;IAEzC,gCAAE;MACA,YAAY,EAAE,IAAI;IAEpB,uCAAS;MACP,SAAS,EAAE,IAAI;MACf,OAAO,EAAE,MAAM;EAIrB,gCAAa;IACX,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,KAAK;;AAGd,oBAAoB;EAClB,UAAU,EAAE,GAAG;;AExBjB,YAAY;EACV,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;;AAEb,kBAAkB;EAChB,UAAU,EAAE,OAAoB;EAChC,KAAK,EAAE,IAAI;;AAGb,WAAW;EACT,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;;AAEb,iBAAiB;EACf,UAAU,EAAE,OAAoB;EAChC,KAAK,EAAE,IAAI;;ACfb,WAAY;EACV,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;EACT,8BAAmB;IACjB,WAAW,EAAE,CAAC;EAEhB,kBAAO;IACL,oCAAoC;IACpC,KAAK,EAAE,IAAI;IACX,mBAAmB,EAAE,CAAC;IACtB,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,mBAAmB;IAC5B,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,OAAO;IACf,YAAY,EAAE,cAAc;IAC5B,kBAAkB,EAAE,6BAA6B;IACjD,eAAe,EAAE,6BAA6B;IAC9C,aAAa,EAAE,6BAA6B;IAC5C,cAAc,EAAE,6BAA6B;IAC7C,UAAU,EAAE,6BAA6B;EAE3C,qBAAU;IACR,gBAAgB,EAAE,kBAAkB;IACpC,KAAK,EAAE,IAAI;;AAIf,cAAe;EACb,MAAM,EAAE,SAAS;EACjB,YAAY,EAAE,IAAI;EAClB,gBAAgB,EAAE,OAAO;EACzB,aAAa,EAAE,CAAC;EAChB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK;;AClChB,OAAO;EACL,QAAQ,EAAC,MAAM;EACf,aAAK;IACH,KAAK,EAAE,4BAA4B;IACnC,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,OAAO;IACpB,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,GAAG;IAClB,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE,WAAW;IACpB,SAAS,EAAE,IAAI;IHYjB,kCAAkC,EGXH,CAAC;IHYhC,0BAA0B,EGZK,CAAC;IHahC,+BAA+B,EGbA,CAAC;IHchC,uBAAuB,EGdQ,CAAC;IHehC,eAAe,EAAE,WAAW;EGb5B,oBAAY;IACV,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,IAAI;IACjB,0BAAK;MACH,OAAO,EAAE,GAAG;MACZ,OAAO,EAAE,YAAY;MACrB,SAAS,EAAE,IAAI;MACf,MAAM,EAAE,cAAc;MACtB,gBAAgB,EAAE,OAAiB;MACnC,MAAM,EAAE,OAAO;IAEjB,gCAAW;MACT,KAAK,EAAE,OAAgB;IAEzB,qCAAgB;MHNlB,kCAAkC,EGOD,GAAG;MHNpC,0BAA0B,EGMO,GAAG;MHLpC,+BAA+B,EGKE,GAAG;MHJpC,uBAAuB,EGIU,GAAG;MHHpC,eAAe,EAAE,WAAW;;AI7B9B,cAAc;EACZ,MAAM,EAAE,MAAM;EACd,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,KAAK;EJMhB,qBAAqB,EILE,GAAG;EJM1B,aAAa,EINU,GAAG;EJO1B,eAAe,EAAE,WAAW;EAAG,qDAAqD;EINpF,UAAU,EAAE,cAAc;EAC1B,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,KAAK;EACd,yBAAU;IAER,OAAO,EAAE,GAAG;IACZ,4HAAiB;MACf,MAAM,EAAE,OAAO;IAEjB,+BAAK;MACH,KAAK,EAAE,OAAO;IAEhB,qCAAW;MACT,gBAAgB,EAAE,kBAAkB;MACpC,KAAK,EAAE,IAAI;IAEb,4BAAE;MACA,aAAa,EAAE,iBAAiB;MAChC,OAAO,EAAE,IAAI;IAEf,kCAAQ;MACN,gBAAgB,EAAE,OAAO;EAG7B,0BAAW;IACT,OAAO,EAAE,IAAI;IACb,iCAAM;MACJ,KAAK,EAAE,OAAO;IAGd,iDAAY;MACV,KAAK,EAAE,OAAO;IAGlB,gGAA0C;MACxC,KAAK,EAAE,IAAI;MJ/Bf,qBAAqB,EIgCM,GAAG;MJ/B9B,aAAa,EI+Bc,GAAG;MJ9B9B,eAAe,EAAE,WAAW;MAAG,qDAAqD;IIiChF,kDAAO;MACL,KAAK,EAAE,GAAG;MACV,OAAO,EAAE,YAAY;IAGzB,kCAAO;MACL,UAAU,EAAE,IAAI;;AAKtB,oCAAoC;EAClC,cAAc;IACZ,KAAK,EAAE,GAAG;AC3Dd,iBAAiB;EACf,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,IAAI;EAChB,0BAAQ;IACN,gBAAgB,EAAE,UAAgB;EAGlC,uBAAE;IACA,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,GAAG;IACZ,aAAa,EAAE,iBAAiB;IAChC,8BAAM;MACJ,KAAK,EAAE,IAAI;IAEb,6BAAK;MACH,KAAK,EAAE,KAAK;MACZ,kCAAI;QACF,gBAAgB,EAAE,wBAAoB;QACtC,OAAO,EAAE,GAAG;QACZ,SAAS,EAAE,IAAI;IAGnB,kCAAU;MACR,OAAO,EAAE,YAAY;MACrB,KAAK,EAAE,KAAK;MACZ,WAAW,EAAE,GAAG;MAChB,UAAU,EAAE,GAAG;MACf,OAAO,EAAE,GAAG;MACZ,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,OAAO;IAEjB,wCAAgB;MACd,OAAO,EAAE,CAAC;IAEZ,oCAAa;MACX,UAAU,EAAE,GAAG;MACf,MAAM,EAAE,KAAK;MACb,KAAK,EAAE,KAAK;MACZ,KAAK,EAAE,eAAe;MACtB,UAAU,EAAE,gCAA+B;MAC3C,uCAAG;QACD,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,IAAI;QACZ,0CAAE;UACA,OAAO,EAAE,GAAG;QAEd,iDAAS;UACP,SAAS,EAAE,IAAI;UACf,OAAO,EAAE,MAAM;MAGnB,4CAAQ;QACN,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,KAAK;;AAOrB,sBAAK;EACH,OAAO,EAAE,KAAK;AAEhB,4EAAyC;EACvC,KAAK,EAAE,IAAI;AAEb,sBAAK;EACH,KAAK,EAAE,IAAI;EACX,2BAAI;IACF,gBAAgB,EAAE,wBAAoB;IACtC,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,IAAI;AAGnB,qCAAqB;EACnB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;AAGb,yCAAM;EACJ,QAAQ,EAAE,MAAM;EAChB,gEAAuB;IACrB,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,IAAI;EAEb,gDAAO;IACL,KAAK,EAAE,IAAI;;ACvFjB,uBAAG;EACD,YAAY,EAAE,IAAI;EAClB,6BAAK;IACH,KAAK,EAAE,kBAA2B;IAClC,MAAM,EAAE,OAAO;EAEjB,mCAAW;IACT,eAAe,EAAE,SAAS;;ACIhC,mCAAoC;EAClC,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,kBAAkB;EAC3B,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,qBAAqB;;AAEnC,6BAA6B;EAC3B,OAAO,EAAE,kBAAkB;EAC3B,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,oBAAoB;;AAElC,UAAU;EACR,OAAO,EAAE,IAAI;;AAGb,kBAAI;EACF,WAAW,EAAE,YAAY;EACzB,YAAY,EAAE,YAAY",
|
||||
"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"
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}]);
|
||||
|
|
|
@ -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
19
js/app/filters/range.js
Normal 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;
|
||||
};
|
||||
});
|
|
@ -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
|
||||
};
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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');
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue