Skip to content

Commit

Permalink
#1566 Update permissions for the data entry role
Browse files Browse the repository at this point in the history
  • Loading branch information
rassokhina-e committed Jun 18, 2024
1 parent 836663b commit 84edf92
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 8 deletions.
8 changes: 8 additions & 0 deletions app/model/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,14 @@ var Users = {
]).nodeify(callback);
},

getProjectRole : async function(user_id, project_id) {
const q = `select r.name from roles r
join user_project_role upr on r.role_id = upr.role_id
where upr.user_id = ${user_id} and upr.project_id = ${project_id}`
console.log('qqqqq', q)
return dbpool.query(q).get(0).get('name');
},

findOwnedProjects: function(user_id, query) {
return dbpool.query(
"SELECT p.* \n"+
Expand Down
7 changes: 4 additions & 3 deletions app/routes/project.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ router.get('/:projecturl?/', function(req, res, next) {
}).catch(next);
}

model.projects.find({ url: project_url, publicTemplates: true}, function(err, rows) {
model.projects.find({ url: project_url, publicTemplates: true}, async function(err, rows) {
if (err) return next(err);
if (!rows.length) {
console.log('\n\n---TEMP: /projects 62 string', rows)
Expand All @@ -74,7 +74,7 @@ router.get('/:projecturl?/', function(req, res, next) {
user: req.session.user
});
}

const userRole = await model.users.getProjectRole(req.session.user.id, project.project_id)
model.users.getPermissions(req.session.user.id, project.project_id, function(err, rows) {
var permissionsMap = rows.reduce(function(_, p) {
_[p.name] = true;
Expand Down Expand Up @@ -112,7 +112,7 @@ router.get('/:projecturl?/', function(req, res, next) {

req.session.user.permissions[project.project_id] = rows;
req.session.loggedIn = true
var perms = {
let perms = {
authorized: true,
public: !project.is_private,
features:{
Expand All @@ -131,6 +131,7 @@ router.get('/:projecturl?/', function(req, res, next) {
userImage: !!req.session.user && !!req.session.user.imageUrl ? req.session.user.imageUrl : '',
userFullName: !!req.session.user && !!req.session.user.firstname ? req.session.user.firstname + ' ' + req.session.user.lastname : '',
permissions: rows.map(function(perm) { return perm.name; }),
userRole: userRole ? userRole : 'Guest'
};

req.project = {
Expand Down
4 changes: 2 additions & 2 deletions assets/app/app/analysis/patternmatching/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ angular.module('a2.analysis.patternmatching', [
if (a2UserPermit.isSuper()) {
return $scope.openExportPopup(exportReport)
}
if (!a2UserPermit.can('manage pattern matchings')) {
if (!a2UserPermit.can('manage pattern matchings') || (a2UserPermit.can('manage pattern matchings') && a2UserPermit.getUserRole() !== 'User')) {
return notify.error('You do not have permission to export data');
}
$scope.openExportPopup(exportReport)
Expand Down Expand Up @@ -676,7 +676,7 @@ angular.module('a2.analysis.patternmatching', [
exportPmReport: function ($event) {
$event.stopPropagation();
if (a2UserPermit.isSuper()) return this.setupExportUrl()
if ((a2UserPermit.all && !a2UserPermit.all.length) || !a2UserPermit.can('export report')) {
if (!a2UserPermit.can('manage pattern matchings') || (a2UserPermit.can('manage pattern matchings') && a2UserPermit.getUserRole() !== 'User')) {
return notify.error('You do not have permission to export Pattern Matching data');
} else return this.setupExportUrl()
},
Expand Down
4 changes: 2 additions & 2 deletions assets/app/app/audiodata/recordings/recordings.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ angular.module('a2.audiodata.recordings', [
};

this.exportPermit = function() {
return a2UserPermit.can('export report')
return a2UserPermit.can('manage project recordings') || a2UserPermit.getUserRole() === 'User'
};

this.createPlaylist = function() {
Expand Down Expand Up @@ -319,7 +319,7 @@ angular.module('a2.audiodata.recordings', [
if (a2UserPermit.isSuper()) {
return this.openExportPopup(listParams)
}
if ((a2UserPermit.all && !a2UserPermit.all.length) || !a2UserPermit.can('export report')) {
if (!a2UserPermit.can('manage project recordings') && a2UserPermit.getUserRole() !== 'User') {
return notify.error('You do not have permission to export data');
}
this.openExportPopup(listParams)
Expand Down
5 changes: 4 additions & 1 deletion assets/app/app/audiodata/sites.js
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,10 @@ angular.module('a2.audiodata.sites', [

$scope.exportSites = function() {
if (a2UserPermit.isSuper()) return $downloadResource(Project.getSitesExportUrl());
if ((a2UserPermit.all && !a2UserPermit.all.length) || !a2UserPermit.can('export report')) {
if (a2UserPermit.getUserRole() === 'Data Entry') {
$downloadResource(Project.getSitesExportUrl());
}
else if (!a2UserPermit.can('manage project sites')) {
return notify.error('You do not have permission to export sites')
} else $downloadResource(Project.getSitesExportUrl());
};
Expand Down
3 changes: 3 additions & 0 deletions assets/app/services/a2permissions.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ angular.module('a2.permissions', [
getUserImage: function() {
return permit.userImage;
},
getUserRole: function() {
return permit.userRole;
},
getUserFullName: function() {
return permit.userFullName;
},
Expand Down

0 comments on commit 84edf92

Please sign in to comment.