diff --git a/client/app/project/project.component.js b/client/app/project/project.component.js index e00d25e..1f0aa21 100644 --- a/client/app/project/project.component.js +++ b/client/app/project/project.component.js @@ -7,7 +7,7 @@ import routes from './project.routes'; export class ProjectComponent { /*@ngInject*/ - constructor($scope, Projects) { + constructor($scope, Projects, Auth) { 'ngInject'; var default_project_folder = '/opt/ehc-ansible-projects/'; @@ -104,8 +104,11 @@ export class ProjectComponent { $scope.$watch('newProject.name', function(newValue, oldValue){ console.log("Changed"); - $scope.newProject.ansibleEngine.projectFolder = '/opt/ansible-projects/' + newValue; - $scope.newProject.ansibleEngine.customModules = '/opt/ansible-projects/' + newValue + '/library'; + // Project folders cannot be edited once created + var user_id = Auth.getCurrentUserSync()._id; + if($scope.editProjectFlag)return; + $scope.newProject.ansibleEngine.projectFolder = '/opt/ansible-projects/' + user_id + '_' + newValue; + $scope.newProject.ansibleEngine.customModules = '/opt/ansible-projects/' + user_id + '_' + newValue + '/library'; }); } diff --git a/client/app/project/project.html b/client/app/project/project.html index d35d6ef..96c90c0 100644 --- a/client/app/project/project.html +++ b/client/app/project/project.html @@ -28,14 +28,14 @@

- -

A directory path to store files of this project
+ +
A directory path on the Ansible Host to store files of this project

- -

A directory path to store custom modules for this project
+ +
A directory path on the Ansible Host to store custom modules for this project

@@ -57,6 +57,7 @@ Name Ansible Host Ansible Version + Owner Time Actions @@ -66,6 +67,7 @@ {{project.name}} {{project.ansibleEngine.ansibleHost}} {{project.ansibleVersion}} + {{project.owner_name}} {{project.creationTime | date : 'medium'}}
diff --git a/server/api/project/project.controller.js b/server/api/project/project.controller.js index 45f3eaa..07b0bb4 100644 --- a/server/api/project/project.controller.js +++ b/server/api/project/project.controller.js @@ -12,6 +12,7 @@ import jsonpatch from 'fast-json-patch'; import Project from './project.model'; +import config from '../../config/environment'; var ansibleTool = require('../../components/ansible/ansible_tool'); function respondWithResult(res, statusCode) { @@ -68,7 +69,17 @@ function handleError(res, statusCode) { // Gets a list of Projects export function index(req, res) { console.log("Getting projects list"); - return Project.find().exec() + + let filter ={owner_id: req.user._id}; + + if(config.userRoles.indexOf(req.user.role) >= config.userRoles.indexOf('admin')){ + console.log("User is admin"); + filter = {} + } + + console.log("Filter =" + JSON.stringify(filter)); + + return Project.find(filter).exec() .then(respondWithResult(res)) .catch(handleError(res)); } @@ -89,6 +100,36 @@ export function create(req, res) { console.log("Ansible Engine " + JSON.stringify(ansibleEngine)); + req.body.owner_id = req.user._id; + req.body.owner_name = req.user.name; + + // Set default values + if(!ansibleEngine.ansibleHost){ + ansibleEngine = { + ansibleHost: config.scriptEngine.host, + ansibleHostUser: config.scriptEngine.user, + ansibleHostPassword: config.scriptEngine.password + }; + + // Update project request body to save in db, without password + req.body.ansibleEngine = { + ansibleHost: config.scriptEngine.host, + ansibleHostUser: config.scriptEngine.user + }; + } + + + if(!ansibleEngine.projectFolder){ + ansibleEngine.projectFolder = '/opt/ansible-projects/' + req.user._id + '_' + req.body.name; + ansibleEngine.customModules = '/opt/ansible-projects/' + req.user._id + '_' + req.body.name + '/library'; + + // Update project request body to save in db + req.body.ansibleEngine.projectFolder = ansibleEngine.projectFolder; + req.body.ansibleEngine.customModules = ansibleEngine.customModules; + + } + + if(ansibleEngine.ansibleHost){ ansibleTool.getAnsibleVersion( function(version){ diff --git a/server/api/project/project.model.js b/server/api/project/project.model.js index e629e48..e973f81 100644 --- a/server/api/project/project.model.js +++ b/server/api/project/project.model.js @@ -15,7 +15,10 @@ var ProjectSchema = new mongoose.Schema({ inventory_data: String, //YAML Format inventory_data_json: {}, //JSON Format roles_data: String, //YAML Format - roles_data_json: {} //JSON Format + roles_data_json: {}, //JSON Format + owner_id: String, + owner_name: String, + members: [] }); registerEvents(ProjectSchema);