Skip to content

Commit 6fe7850

Browse files
committed
fix edit permission check for elements in mounted projects, fix rejected code 304 elements handling
1 parent 7a11815 commit 6fe7850

File tree

5 files changed

+17
-8
lines changed

5 files changed

+17
-8
lines changed

app/config/config.example.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
//Do not modify the structure of this
1414
window.__env = {
1515
// View Editor Version
16-
version: '4.0.0',
16+
version: '4.0.1',
1717
// API url
1818
apiUrl: 'http://localhost:8080',
1919
// Base url

src/directives/Utils.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,8 @@ function Utils($q, $uibModal, $timeout, $templateCache, $compile, $window, URLSe
388388
* @param {boolean} doNotScroll whether to scroll to element
389389
*/
390390
var startEdit = function(scope, mmsViewCtrl, domElement, template, doNotScroll) {
391+
PermissionsService.initializePermissions({id: scope.element._projectId}, {id: scope.element._refId, _projectId: scope.element._projectId})
392+
.finally(function(data) {
391393
if (mmsViewCtrl.isEditable() && !scope.isEditing && scope.element && scope.commitId === 'latest' && PermissionsService.hasProjectIdBranchIdEditPermission(scope.element._projectId, scope.element._refId)) {
392394
var elementOb = scope.element;
393395
var reqOb = {elementId: elementOb.id, projectId: elementOb._projectId, refId: elementOb._refId};
@@ -443,6 +445,7 @@ function Utils($q, $uibModal, $timeout, $templateCache, $compile, $window, URLSe
443445
}
444446
});
445447
}
448+
});
446449
};
447450

448451
/**

src/directives/mmsSpec.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,9 @@ function mmsSpec(Utils, URLService, AuthService, ElementService, UtilsService, V
177177
}
178178
});*/
179179
}
180-
if ((scope.mmsCommitId !== 'latest' && scope.mmsCommitId) || !PermissionsService.hasProjectIdBranchIdEditPermission(scope.mmsProjectId, scope.mmsRefId)) {
180+
PermissionsService.initializePermissions({id: scope.element._projectId}, {id: scope.element._refId, _projectId: scope.element._projectId})
181+
.finally(function(data) {
182+
if ((scope.mmsCommitId !== 'latest' && scope.mmsCommitId) || !PermissionsService.hasProjectIdBranchIdEditPermission(scope.element._projectId, scope.element._refId)) {
181183
scope.editable = false;
182184
scope.edit = null;
183185
scope.editing = false;
@@ -212,6 +214,7 @@ function mmsSpec(Utils, URLService, AuthService, ElementService, UtilsService, V
212214
}
213215
});
214216
}
217+
});
215218
getTypeClass(scope.element);
216219
scope.elementDataLink = URLService.getRoot() + '/projects/'+scope.element._projectId+'/refs/'+scope.element._refId+'/elements/'+scope.element.id+'?commitId='+scope.element._commitId+'&token='+AuthService.getToken();
217220
scope.gettingSpec = false;

src/services/ElementService.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -466,8 +466,8 @@ function ElementService($q, $http, URLService, UtilsService, CacheService, HttpS
466466
}, Object.assign({timeout: 60000}))
467467
.then(function(response) {
468468
var rejected = response.data.rejected;
469-
if (rejected && rejected.length > 0 && rejected[0].code === 304 && rejected[0].element) { //elem will be rejected if server detects no changes
470-
deferred.resolve(rejected[0].element);
469+
if (rejected && rejected.length > 0 && rejected[0].code === 304 && rejected[0].object) { //elem will be rejected if server detects no changes
470+
deferred.resolve(rejected[0].object);
471471
return;
472472
}
473473
if (!angular.isArray(response.data.elements) || response.data.elements.length === 0) {
@@ -831,7 +831,7 @@ function ElementService($q, $http, URLService, UtilsService, CacheService, HttpS
831831

832832
function _bulkUpdateSuccessHandler(serverResponse, deferred) {
833833
var results = [];
834-
var elements = serverResponse.data.elements;
834+
var elements = serverResponse.data.elements ? serverResponse.data.elements : [];
835835
elements.forEach(function (e) {
836836
var metaOb = _createMetaOb(e);
837837
var editCopy = JSON.parse(JSON.stringify(e));
@@ -847,8 +847,8 @@ function ElementService($q, $http, URLService, UtilsService, CacheService, HttpS
847847
var rejected = serverResponse.data.rejected;
848848
if (rejected && rejected.length > 0) {
849849
rejected.forEach(function(e) {
850-
if (e.code === 304 && e.element) {
851-
results.push(e.element); //add any server rejected elements because they haven't changed
850+
if (e.code === 304 && e.object) {
851+
results.push(e.object); //add any server rejected elements because they haven't changed
852852
}
853853
});
854854
}

src/services/PermissionsService.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ function PermissionsService($q, $http, URLService, CacheService, _) {
1919
var url = URLService.getPermissionsLookupURL();
2020

2121
var deferred = $q.defer();
22-
22+
if (permissions.project[projectOb.id] !== undefined && permissions.ref[projectOb.id + '/' + refOb.id] !== undefined) {
23+
deferred.resolve(permissions);
24+
return deferred.promise;
25+
}
2326
$http.put(url, { "lookups" : [
2427
{
2528
"type" : "PROJECT",

0 commit comments

Comments
 (0)