Add read-only credential form depending on access

This commit is contained in:
gconsidine
2017-07-27 18:07:06 -04:00
parent bf42021a32
commit 6239df6778
8 changed files with 64 additions and 7 deletions
@@ -1,5 +1,5 @@
<button class="btn at-Button{{ fill }}--{{ color }}"
ng-disabled="form.disabled || (type === 'save' && !form.isValid)"
ng-disabled="type !== 'cancel' && (form.disabled || (type === 'save' && !form.isValid))"
ng-click="action()">
{{::text}}
</button>
@@ -27,6 +27,8 @@ function AtFormController (eventService, strings) {
form = _form_;
modal = scope[scope.ns].modal;
vm.state.disabled = scope.state.disabled;
vm.setListeners();
};
@@ -79,6 +79,8 @@ function AtInputLookupController (baseInputController, $q, $state, $stateParams)
};
vm.search = () => {
scope.state._touched = true;
return model.search({ [search.key]: scope.state._displayValue }, search.config)
.then(found => {
if (!found) {
+46
View File
@@ -217,12 +217,55 @@ function find (method, keys) {
return value;
}
function has (method, keys) {
if (!keys) {
keys = method;
method = 'GET';
}
method = method.toUpperCase();
let value;
switch (method) {
case 'OPTIONS':
value = this.options(keys);
break;
default:
value = this.get(keys);
}
return value !== undefined && value !== null;
}
function normalizePath (resource) {
let version = '/api/v2/';
return `${version}${resource}/`;
}
function isEditable () {
let canEdit = this.get('summary_fields.user_capabilities.edit');
if (canEdit) {
return true;
}
if (this.has('options', 'actions.PUT')) {
return true;
}
return false;
}
function isCreatable () {
if (this.has('options', 'actions.POST')) {
return true;
}
return false;
}
function graft (id) {
let item = this.get('results').filter(result => result.id === id);
@@ -255,6 +298,9 @@ function BaseModel (path) {
this.find = find;
this.get = get;
this.graft = graft;
this.has = has;
this.isEditable = isEditable;
this.isCreatable = isCreatable;
this.match = match;
this.model = {};
this.normalizePath = normalizePath;
+7 -4
View File
@@ -3,18 +3,21 @@ const ENCRYPTED_VALUE = '$encrypted$';
let BaseModel;
function createFormSchema (method, config) {
if (!config) {
config = method;
method = 'GET';
}
let schema = Object.assign({}, this.options(`actions.${method.toUpperCase()}`));
if (config && config.omit) {
config.omit.forEach(key => {
delete schema[key];
});
config.omit.forEach(key => delete schema[key]);
}
for (let key in schema) {
schema[key].id = key;
if (method === 'put') {
if (this.has(key)) {
schema[key]._value = this.get(key);
}
}