Skip to content
Snippets Groups Projects
Commit ffabc8e5 authored by Cam Saul's avatar Cam Saul
Browse files

Infer SSL support when adding a DB from admin

parent 57f44a52
Branches
Tags
No related merge requests found
......@@ -49,6 +49,12 @@ DatabasesControllers.controller('DatabaseEdit', ['$scope', '$routeParams', '$loc
$scope.ENGINES = CorvusCore.ENGINES;
// if we're adding a new database then hide the SSL field; we'll determine it automatically <3
var hideSSLField = true;
$scope.shouldHideField = function(field) {
return hideSSLField && field.fieldName === 'ssl';
}
// update an existing Database
var update = function(database, details) {
$scope.$broadcast("form:reset");
......@@ -73,11 +79,25 @@ DatabasesControllers.controller('DatabaseEdit', ['$scope', '$routeParams', '$loc
});
};
// TODO - Why do we *require* a valid connection in setup, but not care about it here?
$scope.save = function(database, details) {
if ($routeParams.databaseId) {
update(database, details);
} else {
create(database, details);
// for a new DB we want to infer SSL support. First try to connect w/ SSL. If that fails, disable SSL
details.ssl = true;
// add 'engine' to the request body
details.engine = database.engine;
Metabase.validate_connection(details, function() {
console.log('Successfully connected with SSL. Setting SSL = true.');
create(database, details);
}, function() {
console.log('Unable to connect with SSL. Setting SSL = false.');
details.ssl = false;
create(database, details);
});
}
};
......@@ -101,6 +121,7 @@ DatabasesControllers.controller('DatabaseEdit', ['$scope', '$routeParams', '$loc
Metabase.db_get({
'dbId': $routeParams.databaseId
}, function(database) {
hideSSLField = false;
$scope.database = database;
$scope.details = $scope.ENGINES[database.engine].parseDetails(database.details);
}, function(error) {
......@@ -116,9 +137,7 @@ DatabasesControllers.controller('DatabaseEdit', ['$scope', '$routeParams', '$loc
engine: 'postgres',
details: {}
};
$scope.details = {
ssl: false
};
$scope.details = {};
}
}
]);
......
......@@ -22,7 +22,13 @@ MetabaseServices.factory('Metabase', ['$resource', '$cookies', function($resourc
validate_connection: {
url:'/api/meta/db/validate/',
method:'POST',
headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }}
headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }},
transformRequest: function(data, headersGetter) {
// API expects 'port' to be an int
if (data.port) data.port = parseInt(data.port);
return angular.toJson(data);
}
},
db_get: {
url:'/api/meta/db/:dbId',
......
......@@ -90,7 +90,7 @@ SetupControllers.controller('SetupConnection', ['$scope', '$routeParams', '$loca
// hide the SSL field when creating a new DB until we auto-infer SSL support
var hideSSLField = true;
$scope.shouldHideField = function(field) {
return field.fieldName === 'ssl' ? hideSSLField : false;
return hideSSLField && field.fieldName === 'ssl';
};
if ($routeParams.dbId) {
......@@ -123,10 +123,6 @@ SetupControllers.controller('SetupConnection', ['$scope', '$routeParams', '$loca
// Call API to determine whether connection is valid. If so, save the DB.
$scope.submit = function() {
// API expects 'port' to be an int
if ($scope.details.port) {
$scope.details.port = parseInt($scope.details.port);
}
// add engine to the request body
$scope.details.engine = $scope.database.engine;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment