diff --git a/databases/static/databases/databases.js b/databases/static/databases/databases.js
index b417175e0..510222fca 100755
--- a/databases/static/databases/databases.js
+++ b/databases/static/databases/databases.js
@@ -568,9 +568,12 @@ app.controller('listDBs', function ($scope, $http) {
app.controller('phpMyAdmin', function ($scope, $http, $window) {
+ $scope.cyberPanelLoading = true;
$scope.generateAccess = function() {
+ $scope.cyberPanelLoading = false;
+
url = "/dataBases/generateAccess";
var data = {};
@@ -586,15 +589,16 @@ app.controller('phpMyAdmin', function ($scope, $http, $window) {
function ListInitialDatas(response) {
-
+ $scope.cyberPanelLoading = true;
if (response.data.status === 1) {
- $window.location.href = '/phpmyadmin';
+ var rUrl = '/phpmyadmin/signin.php?username=' + response.data.username + '&token=' + response.data.token;
+ $window.location.href = rUrl;
}
else {}
}
- function cantLoadInitialDatas(response) {}
+ function cantLoadInitialDatas(response) {$scope.cyberPanelLoading = true;}
}
diff --git a/databases/templates/databases/phpMyAdmin.html b/databases/templates/databases/phpMyAdmin.html
index 431b87fc1..00a192ae6 100755
--- a/databases/templates/databases/phpMyAdmin.html
+++ b/databases/templates/databases/phpMyAdmin.html
@@ -24,8 +24,7 @@
{% trans "Auto-login for PHPMYAdmin is now supported. Click the button below to generate auto-access for PHPMYAdmin" %}
-
+
diff --git a/databases/urls.py b/databases/urls.py
index 8ac471f8f..02a514f83 100755
--- a/databases/urls.py
+++ b/databases/urls.py
@@ -18,4 +18,5 @@ urlpatterns = [
url(r'^allowRemoteIP$', views.allowRemoteIP, name='allowRemoteIP'),
url(r'^phpMyAdmin$', views.phpMyAdmin, name='phpMyAdmin'),
url(r'^generateAccess$', views.generateAccess, name='generateAccess'),
+ url(r'^fetchDetailsPHPMYAdmin$', views.fetchDetailsPHPMYAdmin, name='fetchDetailsPHPMYAdmin'),
]
\ No newline at end of file
diff --git a/databases/views.py b/databases/views.py
index a9bf018b7..f5edc01c2 100755
--- a/databases/views.py
+++ b/databases/views.py
@@ -162,9 +162,12 @@ def generateAccess(request):
currentACL = ACLManager.loadedACL(userID)
try:
- GlobalUserDB.objects.get(username=admin.userName)
- except:
+ gdb = GlobalUserDB.objects.get(username=admin.userName)
+ token = randomPassword.generate_pass()
+ gdb.token = token
+ gdb.save()
+ except:
## Key generation
keySavePath = '/home/cyberpanel/phpmyadmin_%s' % (admin.userName)
@@ -183,8 +186,9 @@ def generateAccess(request):
##
password = randomPassword.generate_pass()
+ token = randomPassword.generate_pass()
f = Fernet(key)
- GlobalUserDB(username=admin, password=f.encrypt(password.encode('utf-8'))).save()
+ GlobalUserDB(username=admin.userName, password=f.encrypt(password.encode('utf-8')).decode(), token=token).save()
sites = ACLManager.findWebsiteObjects(currentACL, userID)
@@ -195,24 +199,55 @@ def generateAccess(request):
mysqlUtilities.addUserToDB(db.dbName, admin.userName, password, createUser)
createUser = 0
- # execPath = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/databases/databaseManager.py"
- # execPath = execPath + " generatePHPMYAdminData --userID " + str(userID)
- #
- # output = ProcessUtilities.outputExecutioner(execPath)
- #
- # if output.find("1,") > -1:
- # request.session['PMA_single_signon_user'] = admin.userName
- # request.session['PMA_single_signon_password'] = output.split(',')[1]
- # data_ret = {'status': 1}
- # json_data = json.dumps(data_ret)
- # return HttpResponse(json_data)
- # else:
-
- data_ret = {'status': 1}
+ data_ret = {'status': 1, 'token': token, 'username': admin.userName}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
+ except BaseException as msg:
+ data_ret = {'status': 0, 'createDBStatus': 0, 'error_message': str(msg)}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
+def fetchDetailsPHPMYAdmin(request):
+ try:
+
+
+ userID = request.session['userID']
+ admin = Administrator.objects.get(id = userID)
+ currentACL = ACLManager.loadedACL(userID)
+
+ username = request.GET.get('username')
+ token = request.GET.get('token')
+
+ if username != admin.userName:
+ return redirect(loadLoginPage)
+
+ ## Key generation
+
+ gdb = GlobalUserDB.objects.get(username=admin.userName)
+
+ if gdb.token == token:
+ keySavePath = '/home/cyberpanel/phpmyadmin_%s' % (admin.userName)
+ key = ProcessUtilities.outputExecutioner('cat %s' % (keySavePath)).strip('\n').encode()
+ f = Fernet(key)
+ password = f.decrypt(gdb.password.encode('utf-8'))
+
+ sites = ACLManager.findWebsiteObjects(currentACL, userID)
+
+ createUser = 0
+
+ for site in sites:
+ for db in site.databases_set.all():
+ mysqlUtilities.addUserToDB(db.dbName, admin.userName, password.decode(), createUser)
+ createUser = 0
+
+ returnURL = '/phpmyadmin/signin.php?username=%s&password=%s' % (admin.userName, password.decode())
+ return redirect(returnURL)
+ else:
+ return redirect(loadLoginPage)
+
+
except BaseException as msg:
data_ret = {'status': 0, 'createDBStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
diff --git a/install/install.py b/install/install.py
index 9f284f16b..e5d9e2280 100755
--- a/install/install.py
+++ b/install/install.py
@@ -702,6 +702,10 @@ class preFlightsChecks:
command = "sed -i 's|'localhost'|'%s'|g' %s" % (self.mysqlhost, '/usr/local/CyberCP/public/phpmyadmin/config.inc.php')
preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
+
+ command = 'cp /usr/local/CyberCP/plogical/phpmyadminsignin.php /usr/local/CyberCP/public/phpmyadmin/phpmyadminsignin.php'
+ preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
+
except BaseException as msg:
logging.InstallLog.writeToFile('[ERROR] ' + str(msg) + " [download_install_phpmyadmin]")
return 0
diff --git a/plogical/phpmyadminsignin.php b/plogical/phpmyadminsignin.php
new file mode 100644
index 000000000..880ca075d
--- /dev/null
+++ b/plogical/phpmyadminsignin.php
@@ -0,0 +1,40 @@
+