Sécurité et restriction en plus

This commit is contained in:
Tom LAVEILLE 2025-02-13 15:13:58 +01:00
parent 1a17bb7d7c
commit 49b78e58ac
2 changed files with 42 additions and 5 deletions

View File

@ -36,7 +36,7 @@ import base64
from qgis.utils import iface
EDITOR_CLASS = load_ui('CenRa_PostgisRename_base.ui')
ch = [u"à", u"À", u"â", u"Â", u"ä", u"Ä", u"å", u"Å", u"ç", u"Ç", u"é", u"É", u"è", u"È", u"ê", u"Ê", u"ë", u"Ë", u"î", u"Î", u"ï", u"Ï", u"ô", u"Ô", u"ö", u"Ö", u"ù", u"Ù", u"û", u"Û", u"ü", u"Ü", u"ÿ", u"Ÿ", u"'", u"-", u" "]
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
@ -83,14 +83,41 @@ class Postgis_Rename(QDialog, EDITOR_CLASS):
self.departement.setCurrentIndex(self.departement.findText(last_value_departement))
def Test(self):
if self.schema.currentText() != '':
oldSchema = self.schema.currentText()
if oldSchema != '':
allIsGood = 0
GET_COUNT_LEFT = "SELECT count(*) FROM information_schema.tables WHERE table_schema LIKE left(table_name,"+str(len(oldSchema))+") AND table_schema LIKE '"+oldSchema+"';"
GET_COUNT_TOT = "SELECT count(*) FROM information_schema.tables WHERE table_schema LIKE '"+oldSchema+"';"
cur.execute(GET_COUNT_TOT)
CountTot = cur.fetchall()[0]
cur.execute(GET_COUNT_LEFT)
CountLeft = cur.fetchall()[0]
if CountLeft[0] == CountTot[0]:
allIsGood = allIsGood+1
self.couche.setChecked(1)
else:
self.couche.setChecked(0)
GET_GRANTEE_PRIVILEGE = "SELECT DISTINCT count(*) FROM information_schema.role_table_grants WHERE table_schema LIKE '"+oldSchema+"' AND grantee LIKE 'grp_qgis' AND privilege_type LIKE 'UPDATE';"
cur.execute(GET_GRANTEE_PRIVILEGE)
CountPrivilege = cur.fetchall()[0]
if CountTot[0] == CountPrivilege[0]:
allIsGood = allIsGood+1
self.compte.setChecked(1)
else:
self.compte.setChecked(0)
if allIsGood == 2:
self.groupBox_3.show()
self.loadValue()
self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(True)
else:
self.groupBox_3.hide()
self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False)
else:
self.old_name.setText('')
@ -189,6 +216,16 @@ class Postgis_Rename(QDialog, EDITOR_CLASS):
self.QMBquestion.setIcon(QMessageBox.Warning)
self.QMBquestion.setText("Attention, le renommage de dossier PostGIS peut engendrer des pertes de liaisons avec des projets QGIS !")
self.QMBquestion.setStandardButtons(QMessageBox.Yes|QMessageBox.No)
self.QMBquestion = self.QMBquestion.exec()
if self.new_name.text() != '':
error_caracteres = 0
for caracteres in ch :
if self.new_name.text().find(caracteres) != -1 :
error_caracteres = 1
if error_caracteres == 0:
self.QMBquestion = self.QMBquestion.exec()
else:
QMessageBox.warning(None, "Oups :", u"Le nom de dossier ne doit pas comporter de caractères spéciaux, ni d'espaces !\n\n\t" + self.new_name.text().lower() )
else:
QMessageBox.warning(None, "Oups :", "Votre projet doit avoire un nom !")
if self.QMBquestion == QMessageBox.Yes:
self.updateName()

View File

@ -94,7 +94,7 @@
</spacer>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="checkBox">
<widget class="QCheckBox" name="compte">
<property name="enabled">
<bool>false</bool>
</property>
@ -117,7 +117,7 @@
</spacer>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="checkBox_2">
<widget class="QCheckBox" name="couche">
<property name="enabled">
<bool>false</bool>
</property>