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);
|