recoveryfile
This commit is contained in:
@@ -2,6 +2,7 @@ import QtQuick
|
|||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Controls.Fusion
|
import QtQuick.Controls.Fusion
|
||||||
|
import QtQuick.Dialogs
|
||||||
import "../js/qmldict.js" as JsLib
|
import "../js/qmldict.js" as JsLib
|
||||||
|
|
||||||
ColumnLayout
|
ColumnLayout
|
||||||
@@ -258,6 +259,8 @@ ColumnLayout
|
|||||||
id: spacer3
|
id: spacer3
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function isEmptyField()
|
function isEmptyField()
|
||||||
{
|
{
|
||||||
if (!firmenName.text.trim() || !street.text.trim() || !city.text.trim())
|
if (!firmenName.text.trim() || !street.text.trim() || !city.text.trim())
|
||||||
|
|||||||
@@ -70,9 +70,13 @@ GridLayout
|
|||||||
{
|
{
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Component.onCompleted:
|
Component.onCompleted:
|
||||||
{
|
{
|
||||||
config.usernameNotAvailable.connect(usernameNotAvailable)
|
config.usernameNotAvailable.connect(usernameNotAvailable)
|
||||||
|
|
||||||
}
|
}
|
||||||
function usernameNotAvailable()
|
function usernameNotAvailable()
|
||||||
{
|
{
|
||||||
@@ -81,6 +85,7 @@ GridLayout
|
|||||||
benutzerNamelabel.color = "red"
|
benutzerNamelabel.color = "red"
|
||||||
benutzerNamelabel.font.bold = true
|
benutzerNamelabel.font.bold = true
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,16 +2,26 @@ import QtQuick
|
|||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Dialogs
|
import QtQuick.Dialogs
|
||||||
|
import QtCore
|
||||||
|
|
||||||
import "../js/qmldict.js" as Qmldict
|
import "../js/qmldict.js" as Qmldict
|
||||||
|
|
||||||
|
|
||||||
Item
|
Item
|
||||||
{
|
{
|
||||||
|
property string recpass: ""
|
||||||
|
property bool adminAvailable: true
|
||||||
Component.onCompleted:
|
Component.onCompleted:
|
||||||
{
|
{
|
||||||
config.dbConnectionError.connect(onDbConnectionError)
|
config.dbConnectionError.connect(onDbConnectionError)
|
||||||
config.adminUserError.connect(onAdminUserError)
|
config.adminUserError.connect(onAdminUserError)
|
||||||
|
config.backupEncryptionKey.connect(onBackupEncryptionKey)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function onBackupEncryptionKey()
|
||||||
|
{
|
||||||
|
recoveryDialog.open()
|
||||||
}
|
}
|
||||||
|
|
||||||
function onDbConnectionError(msg, success)
|
function onDbConnectionError(msg, success)
|
||||||
@@ -27,9 +37,44 @@ Item
|
|||||||
encryptPwDialog.open()
|
encryptPwDialog.open()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
adminAvailable = false
|
||||||
firstStart.push("AdminUserConfig.qml")
|
firstStart.push("AdminUserConfig.qml")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
MessageDialog
|
||||||
|
{
|
||||||
|
id: recoveryDialog
|
||||||
|
|
||||||
|
text: qsTr("Diesen Wiederherstellungscode musst du sicher aufbewahren!\nMöchtest du das jetzt machen?")
|
||||||
|
title: qsTr("Wiederherstellen")
|
||||||
|
buttons: MessageDialog.Yes | MessageDialog.No
|
||||||
|
onAccepted: saveRecoveryDialog.open()
|
||||||
|
|
||||||
|
}
|
||||||
|
FileDialog
|
||||||
|
{
|
||||||
|
id: saveRecoveryDialog
|
||||||
|
title: qsTr("Wiederherstellungsdatei")
|
||||||
|
fileMode: adminAvailable? FileDialog.OpenFile: FileDialog.SaveFile
|
||||||
|
nameFilters: ["PYQCRM Recovery files (*.pyqrec)"]
|
||||||
|
currentFolder: StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0]
|
||||||
|
onAccepted:
|
||||||
|
{
|
||||||
|
if (!adminAvailable) config.saveRecoveryKey(saveRecoveryDialog.currentFile, recpass)
|
||||||
|
else
|
||||||
|
{
|
||||||
|
config.getRecoveryKey(saveRecoveryDialog.currentFile, recpass)
|
||||||
|
|
||||||
|
}
|
||||||
|
appLoader.source = "Dashboard.qml"
|
||||||
|
topBar.visible = true
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
MessageDialog
|
MessageDialog
|
||||||
{
|
{
|
||||||
id: conErrDialog
|
id: conErrDialog
|
||||||
@@ -43,15 +88,14 @@ Item
|
|||||||
{
|
{
|
||||||
id: encryptPwDialog
|
id: encryptPwDialog
|
||||||
modal: true
|
modal: true
|
||||||
title: qsTr("Encryption Key")
|
title: qsTr("Wiederherstellung")
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
standardButtons: Dialog.Ok | Dialog.Cancel
|
standardButtons: Dialog.Ok | Dialog.Cancel
|
||||||
onAccepted:
|
onAccepted:
|
||||||
{
|
{
|
||||||
// TODO: signal for EncryptionKey testing
|
recpass = encryptPassword.text
|
||||||
config.setEncyrptKey(encryptPassword.text)
|
saveRecoveryDialog.open()
|
||||||
appLoader.source = "Dashboard.qml"
|
|
||||||
topBar.visible = true
|
|
||||||
}
|
}
|
||||||
ColumnLayout
|
ColumnLayout
|
||||||
{
|
{
|
||||||
@@ -59,7 +103,7 @@ Item
|
|||||||
{
|
{
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: qsTr("Encryption Key eingeben:")
|
text: qsTr("Wiederherstellungspasswort eingeben: ")
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField
|
TextField
|
||||||
@@ -67,12 +111,14 @@ Item
|
|||||||
id: encryptPassword
|
id: encryptPassword
|
||||||
echoMode: TextInput.Password
|
echoMode: TextInput.Password
|
||||||
implicitWidth: 300
|
implicitWidth: 300
|
||||||
placeholderText: qsTr("Hier Encryption Key eingeben")
|
placeholderText: qsTr("Hier Wiederherstellungspasswort eingeben")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
StackView
|
StackView
|
||||||
{
|
{
|
||||||
@@ -129,8 +175,8 @@ Item
|
|||||||
admin = config.addAdminUser(pyqcrm_conf)
|
admin = config.addAdminUser(pyqcrm_conf)
|
||||||
if (admin)
|
if (admin)
|
||||||
{
|
{
|
||||||
appLoader.source = "Dashboard.qml"
|
//appLoader.source = "Dashboard.qml"
|
||||||
topBar.visible = true
|
//topBar.visible = true
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,288 +0,0 @@
|
|||||||
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.17 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.17">
|
|
||||||
<diagram name="Seite-1" id="pSBFfb5XT7-LB2o_rlPx">
|
|
||||||
<mxGraphModel dx="1434" dy="844" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
|
||||||
<root>
|
|
||||||
<mxCell id="0" />
|
|
||||||
<mxCell id="1" parent="0" />
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-6" value="" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="270" y="90" width="80" height="80" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-7" value="Erfolgreich<div><br></div>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="270" y="70" width="80" height="40" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-8" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="zKFDF5UOk-7tD0-7yUJp-6" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="450" y="465" as="sourcePoint" />
|
|
||||||
<mxPoint x="620" y="130" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-9" value="ja" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="zKFDF5UOk-7tD0-7yUJp-8" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="-0.1294" y="2" relative="1" as="geometry">
|
|
||||||
<mxPoint as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-10" value="Laden Konfiguration" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="620" y="100" width="160" height="60" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-11" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="zKFDF5UOk-7tD0-7yUJp-6" target="vLrOMzFsj3qdJpjowrCW-6" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="370" y="465" as="sourcePoint" />
|
|
||||||
<mxPoint x="310" y="205" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-12" value="nein" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="zKFDF5UOk-7tD0-7yUJp-11" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="-0.0286" y="4" relative="1" as="geometry">
|
|
||||||
<mxPoint as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-17" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="zKFDF5UOk-7tD0-7yUJp-10" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="450" y="465" as="sourcePoint" />
|
|
||||||
<mxPoint x="700" y="280" as="targetPoint" />
|
|
||||||
<Array as="points">
|
|
||||||
<mxPoint x="700" y="190" />
|
|
||||||
</Array>
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-6" value="" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="270" y="215" width="80" height="80" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-10" value="Backup existiert" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="187.5" y="210" width="110" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-13" value="importieren" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="450" y="240" width="80" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-14" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="vLrOMzFsj3qdJpjowrCW-6" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="190" y="285" as="sourcePoint" />
|
|
||||||
<mxPoint x="450" y="255" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-15" value="ja" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vLrOMzFsj3qdJpjowrCW-14" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="-0.18" relative="1" as="geometry">
|
|
||||||
<mxPoint as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-55" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="zKFDF5UOk-7tD0-7yUJp-6" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="40" y="130" as="sourcePoint" />
|
|
||||||
<mxPoint x="270" y="130" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-56" value="config exists" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vLrOMzFsj3qdJpjowrCW-55" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="-0.1714" y="1" relative="1" as="geometry">
|
|
||||||
<mxPoint x="-5" y="1" as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-1" value="" style="ellipse;html=1;shape=startState;fillColor=#000000;strokeColor=#ff0000;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="10" y="115" width="30" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-73" value="Data not full usable" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="10" y="595" width="130" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-5" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="530" y="260" as="sourcePoint" />
|
|
||||||
<mxPoint x="620" y="150" as="targetPoint" />
|
|
||||||
<Array as="points">
|
|
||||||
<mxPoint x="580" y="260" />
|
|
||||||
<mxPoint x="580" y="150" />
|
|
||||||
</Array>
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-70" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.483;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="vLrOMzFsj3qdJpjowrCW-47" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="60" y="695" as="sourcePoint" />
|
|
||||||
<mxPoint x="660" y="320" as="targetPoint" />
|
|
||||||
<Array as="points">
|
|
||||||
<mxPoint x="399" y="800" />
|
|
||||||
<mxPoint x="560" y="800" />
|
|
||||||
<mxPoint x="560" y="320" />
|
|
||||||
</Array>
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-18" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="zKFDF5UOk-7tD0-7yUJp-13" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="310" y="460" as="sourcePoint" />
|
|
||||||
<mxPoint x="310" y="390" as="targetPoint" />
|
|
||||||
<Array as="points">
|
|
||||||
<mxPoint x="310" y="350" />
|
|
||||||
</Array>
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-30" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="zKFDF5UOk-7tD0-7yUJp-13" target="vLrOMzFsj3qdJpjowrCW-22" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="342.5" y="590" as="sourcePoint" />
|
|
||||||
<mxPoint x="310" y="595" as="targetPoint" />
|
|
||||||
<Array as="points" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-39" value="Login erfolgreich" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="580" y="555" width="110" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-23" value="" style="group" parent="1" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="620" y="280" width="190" height="490" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-16" value="" style="rhombus;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-23" vertex="1">
|
|
||||||
<mxGeometry x="40" width="80" height="80" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-19" value="Dashboard" style="rounded=1;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-23" vertex="1">
|
|
||||||
<mxGeometry x="10" y="430" width="160" height="60" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-21" value="Login Screen" style="rounded=1;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-23" vertex="1">
|
|
||||||
<mxGeometry y="140" width="160" height="60" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-36" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="wBh1sZi6hsA7ukKMJ2_X-23" source="zKFDF5UOk-7tD0-7yUJp-16" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="-170" y="180" as="sourcePoint" />
|
|
||||||
<mxPoint x="80" y="140" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-37" value="" style="rhombus;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-23" vertex="1">
|
|
||||||
<mxGeometry x="40" y="280" width="80" height="80" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-38" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="wBh1sZi6hsA7ukKMJ2_X-23" source="zKFDF5UOk-7tD0-7yUJp-21" target="zKFDF5UOk-7tD0-7yUJp-37" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="-170" y="180" as="sourcePoint" />
|
|
||||||
<mxPoint x="-120" y="130" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-40" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="wBh1sZi6hsA7ukKMJ2_X-23" source="zKFDF5UOk-7tD0-7yUJp-37" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="-130" y="220" as="sourcePoint" />
|
|
||||||
<mxPoint x="80" y="430" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-41" value="ja" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="zKFDF5UOk-7tD0-7yUJp-40" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="-0.3429" y="-2" relative="1" as="geometry">
|
|
||||||
<mxPoint as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-42" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="wBh1sZi6hsA7ukKMJ2_X-23" source="zKFDF5UOk-7tD0-7yUJp-37" target="zKFDF5UOk-7tD0-7yUJp-21" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="-170" y="180" as="sourcePoint" />
|
|
||||||
<mxPoint x="200" y="180" as="targetPoint" />
|
|
||||||
<Array as="points">
|
|
||||||
<mxPoint x="190" y="320" />
|
|
||||||
<mxPoint x="190" y="170" />
|
|
||||||
</Array>
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-43" value="nein" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="zKFDF5UOk-7tD0-7yUJp-42" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="0.1259" y="-3" relative="1" as="geometry">
|
|
||||||
<mxPoint as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-27" value="" style="group" parent="1" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="130" y="460" width="390" height="300" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-24" value="Admin user speichern" style="rounded=1;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
|
||||||
<mxGeometry x="270" y="205" width="120" height="40" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-22" value="" style="rhombus;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
|
||||||
<mxGeometry x="140" width="80" height="80" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-24" value="admin exists" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
|
||||||
<mxGeometry x="77.5" width="90" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-35" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" source="vLrOMzFsj3qdJpjowrCW-22" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="300" y="39.5" as="sourcePoint" />
|
|
||||||
<mxPoint x="270" y="40" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-39" value="nein" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vLrOMzFsj3qdJpjowrCW-35" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="-0.1143" relative="1" as="geometry">
|
|
||||||
<mxPoint as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-49" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" source="vLrOMzFsj3qdJpjowrCW-22" target="vLrOMzFsj3qdJpjowrCW-61" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="130" y="60" as="sourcePoint" />
|
|
||||||
<mxPoint x="180" y="110" as="targetPoint" />
|
|
||||||
<Array as="points" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-54" value="ja" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vLrOMzFsj3qdJpjowrCW-49" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="-0.4" y="1" relative="1" as="geometry">
|
|
||||||
<mxPoint as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-61" value="" style="rhombus;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
|
||||||
<mxGeometry x="140" y="120" width="80" height="60" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-62" value="<span style="text-wrap: wrap;">encryption&nbsp;</span><div><span style="text-wrap: wrap;">Key</span></div>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
|
||||||
<mxGeometry x="180" y="110" width="80" height="40" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-63" value="create Verschlüssenlungskey" style="rounded=1;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
|
||||||
<mxGeometry x="270" y="120" width="120" height="35" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-66" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" source="vLrOMzFsj3qdJpjowrCW-61" target="vLrOMzFsj3qdJpjowrCW-71" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="20" y="160" as="sourcePoint" />
|
|
||||||
<mxPoint x="50" y="140" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-67" value="nein" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vLrOMzFsj3qdJpjowrCW-66" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="0.2061" y="-1" relative="1" as="geometry">
|
|
||||||
<mxPoint as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-69" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.459;exitY=0.998;exitDx=0;exitDy=0;exitPerimeter=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="329.65000000000015" y="244.9999999999999" as="sourcePoint" />
|
|
||||||
<mxPoint x="330" y="290" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-71" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.flowchart.or;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
|
||||||
<mxGeometry y="125" width="50" height="50" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-24" value="add admin and user roles&nbsp;&nbsp;" style="rounded=1;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
|
||||||
<mxGeometry x="270" y="10" width="120" height="60" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-25" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" target="zKFDF5UOk-7tD0-7yUJp-24" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="330" y="155" as="sourcePoint" />
|
|
||||||
<mxPoint x="330" y="145" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-26" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" source="wBh1sZi6hsA7ukKMJ2_X-24" target="vLrOMzFsj3qdJpjowrCW-63" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="370" y="-5" as="sourcePoint" />
|
|
||||||
<mxPoint x="420" y="-55" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-28" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="vLrOMzFsj3qdJpjowrCW-6" target="zKFDF5UOk-7tD0-7yUJp-13" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="310" y="295" as="sourcePoint" />
|
|
||||||
<mxPoint x="310" y="390" as="targetPoint" />
|
|
||||||
<Array as="points" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-29" value="nein" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="wBh1sZi6hsA7ukKMJ2_X-28" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="-0.1231" y="3" relative="1" as="geometry">
|
|
||||||
<mxPoint as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-13" value="anlegen Konfiguration" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="250" y="355" width="120" height="65" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-47" value="" style="shape=line;html=1;strokeWidth=6;strokeColor=#ff0000;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="297.5" y="760" width="210" height="10" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-64" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="vLrOMzFsj3qdJpjowrCW-61" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="310" y="635" as="sourcePoint" />
|
|
||||||
<mxPoint x="311" y="750" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-65" value="ja" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vLrOMzFsj3qdJpjowrCW-64" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="-0.32" relative="1" as="geometry">
|
|
||||||
<mxPoint as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
</root>
|
|
||||||
</mxGraphModel>
|
|
||||||
</diagram>
|
|
||||||
</mxfile>
|
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-73" value="Data not full usable" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
<mxCell id="vLrOMzFsj3qdJpjowrCW-73" value="Data not full usable" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||||
<mxGeometry x="10" y="595" width="130" height="30" as="geometry" />
|
<mxGeometry x="10" y="595" width="130" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-5" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-5" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="530" y="260" as="sourcePoint" />
|
<mxPoint x="530" y="260" as="sourcePoint" />
|
||||||
<mxPoint x="620" y="150" as="targetPoint" />
|
<mxPoint x="620" y="150" as="targetPoint" />
|
||||||
@@ -91,12 +91,12 @@
|
|||||||
</Array>
|
</Array>
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-70" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.483;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="vLrOMzFsj3qdJpjowrCW-47" edge="1">
|
<mxCell id="vLrOMzFsj3qdJpjowrCW-70" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="KgfY491xeuN-natDz28Q-1" edge="1">
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="60" y="695" as="sourcePoint" />
|
<mxPoint x="750" y="810" as="sourcePoint" />
|
||||||
<mxPoint x="660" y="320" as="targetPoint" />
|
<mxPoint x="660" y="320" as="targetPoint" />
|
||||||
<Array as="points">
|
<Array as="points">
|
||||||
<mxPoint x="399" y="800" />
|
<mxPoint x="560" y="880" />
|
||||||
<mxPoint x="560" y="800" />
|
<mxPoint x="560" y="800" />
|
||||||
<mxPoint x="560" y="320" />
|
<mxPoint x="560" y="320" />
|
||||||
</Array>
|
</Array>
|
||||||
@@ -111,7 +111,7 @@
|
|||||||
</Array>
|
</Array>
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-30" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="zKFDF5UOk-7tD0-7yUJp-13" edge="1" target="vLrOMzFsj3qdJpjowrCW-22">
|
<mxCell id="zKFDF5UOk-7tD0-7yUJp-30" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="zKFDF5UOk-7tD0-7yUJp-13" target="vLrOMzFsj3qdJpjowrCW-22" edge="1">
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="342.5" y="590" as="sourcePoint" />
|
<mxPoint x="342.5" y="590" as="sourcePoint" />
|
||||||
<mxPoint x="310" y="595" as="targetPoint" />
|
<mxPoint x="310" y="595" as="targetPoint" />
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-39" value="Login erfolgreich" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
<mxCell id="zKFDF5UOk-7tD0-7yUJp-39" value="Login erfolgreich" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||||
<mxGeometry x="580" y="555" width="110" height="30" as="geometry" />
|
<mxGeometry x="580" y="555" width="110" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-23" value="" style="group" vertex="1" connectable="0" parent="1">
|
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-23" value="" style="group" parent="1" vertex="1" connectable="0">
|
||||||
<mxGeometry x="620" y="280" width="190" height="490" as="geometry" />
|
<mxGeometry x="620" y="280" width="190" height="490" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-16" value="" style="rhombus;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-23" vertex="1">
|
<mxCell id="zKFDF5UOk-7tD0-7yUJp-16" value="" style="rhombus;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-23" vertex="1">
|
||||||
@@ -174,7 +174,7 @@
|
|||||||
<mxPoint as="offset" />
|
<mxPoint as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-27" value="" style="group" vertex="1" connectable="0" parent="1">
|
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-27" value="" style="group" parent="1" vertex="1" connectable="0">
|
||||||
<mxGeometry x="130" y="460" width="390" height="300" as="geometry" />
|
<mxGeometry x="130" y="460" width="390" height="300" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-24" value="Admin user speichern" style="rounded=1;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
<mxCell id="zKFDF5UOk-7tD0-7yUJp-24" value="Admin user speichern" style="rounded=1;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
||||||
@@ -197,10 +197,7 @@
|
|||||||
<mxPoint as="offset" />
|
<mxPoint as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-47" value="" style="shape=line;html=1;strokeWidth=6;strokeColor=#ff0000;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
<mxCell id="vLrOMzFsj3qdJpjowrCW-49" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" source="vLrOMzFsj3qdJpjowrCW-22" target="vLrOMzFsj3qdJpjowrCW-61" edge="1">
|
||||||
<mxGeometry x="167.5" y="290" width="210" height="10" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-49" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" source="vLrOMzFsj3qdJpjowrCW-22" edge="1" target="vLrOMzFsj3qdJpjowrCW-61">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="130" y="60" as="sourcePoint" />
|
<mxPoint x="130" y="60" as="sourcePoint" />
|
||||||
<mxPoint x="180" y="110" as="targetPoint" />
|
<mxPoint x="180" y="110" as="targetPoint" />
|
||||||
@@ -221,18 +218,7 @@
|
|||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-63" value="create Verschlüssenlungskey" style="rounded=1;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
<mxCell id="vLrOMzFsj3qdJpjowrCW-63" value="create Verschlüssenlungskey" style="rounded=1;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
||||||
<mxGeometry x="270" y="120" width="120" height="35" as="geometry" />
|
<mxGeometry x="270" y="120" width="120" height="35" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-64" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.064;entryY=0.226;entryDx=0;entryDy=0;entryPerimeter=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" source="vLrOMzFsj3qdJpjowrCW-61" target="vLrOMzFsj3qdJpjowrCW-47" edge="1">
|
<mxCell id="vLrOMzFsj3qdJpjowrCW-66" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" source="vLrOMzFsj3qdJpjowrCW-61" target="vLrOMzFsj3qdJpjowrCW-71" edge="1">
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="180" y="175" as="sourcePoint" />
|
|
||||||
<mxPoint x="180" y="293" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-65" value="ja" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vLrOMzFsj3qdJpjowrCW-64" vertex="1" connectable="0">
|
|
||||||
<mxGeometry x="-0.32" relative="1" as="geometry">
|
|
||||||
<mxPoint as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-66" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" source="vLrOMzFsj3qdJpjowrCW-61" edge="1" target="vLrOMzFsj3qdJpjowrCW-71">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="20" y="160" as="sourcePoint" />
|
<mxPoint x="20" y="160" as="sourcePoint" />
|
||||||
<mxPoint x="50" y="140" as="targetPoint" />
|
<mxPoint x="50" y="140" as="targetPoint" />
|
||||||
@@ -243,38 +229,32 @@
|
|||||||
<mxPoint as="offset" />
|
<mxPoint as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-69" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.459;exitY=0.998;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.774;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" target="vLrOMzFsj3qdJpjowrCW-47" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="329.65000000000015" y="244.9999999999999" as="sourcePoint" />
|
|
||||||
<mxPoint x="330" y="285" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="vLrOMzFsj3qdJpjowrCW-71" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.flowchart.or;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
<mxCell id="vLrOMzFsj3qdJpjowrCW-71" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.flowchart.or;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
||||||
<mxGeometry y="125" width="50" height="50" as="geometry" />
|
<mxGeometry y="125" width="50" height="50" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-24" value="add admin and user roles&nbsp;&nbsp;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="wBh1sZi6hsA7ukKMJ2_X-27">
|
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-24" value="add admin and user roles&nbsp;&nbsp;" style="rounded=1;whiteSpace=wrap;html=1;" parent="wBh1sZi6hsA7ukKMJ2_X-27" vertex="1">
|
||||||
<mxGeometry x="270" y="10" width="120" height="60" as="geometry" />
|
<mxGeometry x="270" y="10" width="120" height="60" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-25" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="wBh1sZi6hsA7ukKMJ2_X-27" target="zKFDF5UOk-7tD0-7yUJp-24">
|
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-25" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" target="zKFDF5UOk-7tD0-7yUJp-24" edge="1">
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="330" y="155" as="sourcePoint" />
|
<mxPoint x="330" y="155" as="sourcePoint" />
|
||||||
<mxPoint x="330" y="145" as="targetPoint" />
|
<mxPoint x="330" y="145" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-26" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="wBh1sZi6hsA7ukKMJ2_X-27" source="wBh1sZi6hsA7ukKMJ2_X-24" target="vLrOMzFsj3qdJpjowrCW-63">
|
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-26" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="wBh1sZi6hsA7ukKMJ2_X-27" source="wBh1sZi6hsA7ukKMJ2_X-24" target="vLrOMzFsj3qdJpjowrCW-63" edge="1">
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="370" y="-5" as="sourcePoint" />
|
<mxPoint x="370" y="-5" as="sourcePoint" />
|
||||||
<mxPoint x="420" y="-55" as="targetPoint" />
|
<mxPoint x="420" y="-55" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-28" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="vLrOMzFsj3qdJpjowrCW-6" target="zKFDF5UOk-7tD0-7yUJp-13">
|
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-28" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="vLrOMzFsj3qdJpjowrCW-6" target="zKFDF5UOk-7tD0-7yUJp-13" edge="1">
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="310" y="295" as="sourcePoint" />
|
<mxPoint x="310" y="295" as="sourcePoint" />
|
||||||
<mxPoint x="310" y="390" as="targetPoint" />
|
<mxPoint x="310" y="390" as="targetPoint" />
|
||||||
<Array as="points" />
|
<Array as="points" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-29" value="nein" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="wBh1sZi6hsA7ukKMJ2_X-28">
|
<mxCell id="wBh1sZi6hsA7ukKMJ2_X-29" value="nein" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="wBh1sZi6hsA7ukKMJ2_X-28" vertex="1" connectable="0">
|
||||||
<mxGeometry x="-0.1231" y="3" relative="1" as="geometry">
|
<mxGeometry x="-0.1231" y="3" relative="1" as="geometry">
|
||||||
<mxPoint as="offset" />
|
<mxPoint as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
@@ -282,6 +262,41 @@
|
|||||||
<mxCell id="zKFDF5UOk-7tD0-7yUJp-13" value="anlegen Konfiguration" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
<mxCell id="zKFDF5UOk-7tD0-7yUJp-13" value="anlegen Konfiguration" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||||
<mxGeometry x="250" y="355" width="120" height="65" as="geometry" />
|
<mxGeometry x="250" y="355" width="120" height="65" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
|
<mxCell id="KgfY491xeuN-natDz28Q-1" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="334" y="800" width="80" height="80" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="vLrOMzFsj3qdJpjowrCW-64" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="vLrOMzFsj3qdJpjowrCW-61" target="KgfY491xeuN-natDz28Q-1" edge="1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="310" y="635" as="sourcePoint" />
|
||||||
|
<mxPoint x="270" y="770" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="310" y="840" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="vLrOMzFsj3qdJpjowrCW-65" value="ja" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vLrOMzFsj3qdJpjowrCW-64" vertex="1" connectable="0">
|
||||||
|
<mxGeometry x="-0.32" relative="1" as="geometry">
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="KgfY491xeuN-natDz28Q-3" value="backup verschlüsselungskey" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="400" y="740" width="120" height="40" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="KgfY491xeuN-natDz28Q-4" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.442;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="zKFDF5UOk-7tD0-7yUJp-24">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="400" y="860" as="sourcePoint" />
|
||||||
|
<mxPoint x="453" y="740" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="KgfY491xeuN-natDz28Q-5" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.442;exitY=1.075;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="KgfY491xeuN-natDz28Q-3" target="KgfY491xeuN-natDz28Q-1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="400" y="660" as="sourcePoint" />
|
||||||
|
<mxPoint x="450" y="610" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="453" y="840" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
</root>
|
</root>
|
||||||
</mxGraphModel>
|
</mxGraphModel>
|
||||||
</diagram>
|
</diagram>
|
||||||
|
|||||||
Binary file not shown.
@@ -24,7 +24,8 @@ class ConfigLoader(QObject):
|
|||||||
dbConnectionError = Signal(str, bool)
|
dbConnectionError = Signal(str, bool)
|
||||||
adminUserError = Signal(str, bool)
|
adminUserError = Signal(str, bool)
|
||||||
usernameNotAvailable = Signal()
|
usernameNotAvailable = Signal()
|
||||||
configurationReady = Signal()
|
configurationReady = Signal(bool)
|
||||||
|
backupEncryptionKey = Signal()
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
@@ -36,6 +37,51 @@ class ConfigLoader(QObject):
|
|||||||
else:
|
else:
|
||||||
config_dir.mkdir(0o750, True, True)
|
config_dir.mkdir(0o750, True, True)
|
||||||
|
|
||||||
|
@Slot(str, str)
|
||||||
|
def saveRecoveryKey(self, recovery_file, recovery_password):
|
||||||
|
rp = self.__setRecoveryPassword(recovery_password)
|
||||||
|
rf = rp[1] + self.__encrypt_key + rp[0]
|
||||||
|
rf = Vermasseln().oscarVermasseln(rf)
|
||||||
|
rec_file = urlparse(recovery_file)
|
||||||
|
rec_file = rec_file.path
|
||||||
|
if os.name == "nt":
|
||||||
|
rec_file = rec_file [1:]
|
||||||
|
try:
|
||||||
|
with open(rec_file, "w") as f:
|
||||||
|
f.write(rf)
|
||||||
|
self.configurationReady.emit(True)
|
||||||
|
except Exception as e:
|
||||||
|
print(str(e))
|
||||||
|
|
||||||
|
|
||||||
|
@Slot(str, str)
|
||||||
|
def getRecoveryKey(self, recovery_file, recovery_password):
|
||||||
|
rec_file = urlparse(recovery_file)
|
||||||
|
rec_file = rec_file.path
|
||||||
|
if os.name == "nt":
|
||||||
|
rec_file = rec_file [1:]
|
||||||
|
try:
|
||||||
|
with open(rec_file, "r") as f:
|
||||||
|
rf = f.read()
|
||||||
|
rf = Vermasseln().entschluesseln(rf)
|
||||||
|
ek = rf[128:]
|
||||||
|
ek = ek[:-32]
|
||||||
|
password = rf[:128]
|
||||||
|
salt = rf[-32:]
|
||||||
|
ok = self.__checkRecoveryPassword(recovery_password, password, salt)
|
||||||
|
if ok:
|
||||||
|
self.configurationReady.emit(True)
|
||||||
|
else:
|
||||||
|
self.configurationReady.emit(False)
|
||||||
|
except Exception as e:
|
||||||
|
print(str(e))
|
||||||
|
|
||||||
|
def __checkRecoveryPassword(self, recovery_password, password, salt):
|
||||||
|
rp = self.__setRecoveryPassword(recovery_password, salt)
|
||||||
|
return rp[1] == password
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Slot(str, str)
|
@Slot(str, str)
|
||||||
def importConfig(self, confile, password):
|
def importConfig(self, confile, password):
|
||||||
|
|
||||||
@@ -52,6 +98,8 @@ class ConfigLoader(QObject):
|
|||||||
|
|
||||||
if not admin:
|
if not admin:
|
||||||
self.usernameNotAvailable.emit()
|
self.usernameNotAvailable.emit()
|
||||||
|
else:
|
||||||
|
self.backupEncryptionKey.emit()
|
||||||
return admin
|
return admin
|
||||||
|
|
||||||
@Slot(dict, result= bool)
|
@Slot(dict, result= bool)
|
||||||
@@ -66,7 +114,7 @@ class ConfigLoader(QObject):
|
|||||||
self.__saveConfig()
|
self.__saveConfig()
|
||||||
conf = self.__checkAdminUser()
|
conf = self.__checkAdminUser()
|
||||||
if conf:
|
if conf:
|
||||||
self.configurationReady.emit()
|
self.configurationReady.emit(True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -75,6 +123,7 @@ class ConfigLoader(QObject):
|
|||||||
with open (self.config_dir + '/pyqcrm.toml', 'r') as f:
|
with open (self.config_dir + '/pyqcrm.toml', 'r') as f:
|
||||||
config = f.read()
|
config = f.read()
|
||||||
self.__config = toml.loads(Vermasseln().entschluesseln(config))
|
self.__config = toml.loads(Vermasseln().entschluesseln(config))
|
||||||
|
self.configurationReady.emit(True)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
print("Konnte die Konfiguration nicht laden.")
|
print("Konnte die Konfiguration nicht laden.")
|
||||||
except TypeError:
|
except TypeError:
|
||||||
@@ -87,8 +136,8 @@ class ConfigLoader(QObject):
|
|||||||
return self.__config
|
return self.__config
|
||||||
|
|
||||||
def __initializeConfig(self):
|
def __initializeConfig(self):
|
||||||
encrypt_key = b64encode(get_random_bytes(32)).decode("utf-8")
|
self.__encrypt_key = b64encode(get_random_bytes(32)).decode("utf-8")
|
||||||
conf = f"[pyqcrm]\nVERSION = \"{self.__version}\"\nENCRYPTION_KEY = \"{encrypt_key}\"\n\n"
|
conf = f"[pyqcrm]\nVERSION = \"{self.__version}\"\nENCRYPTION_KEY = \"{self.__encrypt_key}\"\n\n"
|
||||||
return conf
|
return conf
|
||||||
|
|
||||||
|
|
||||||
@@ -114,12 +163,13 @@ class ConfigLoader(QObject):
|
|||||||
self.adminUserError.emit("Admin vorhanden", True)
|
self.adminUserError.emit("Admin vorhanden", True)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@Slot(str)
|
|
||||||
def setEncyrptKey(self, key):
|
def __setRecoveryPassword(self, key, salt = None):
|
||||||
self.__config['pyqcrm']['ENCRYPTION_KEY'] = key
|
key = Vermasseln.userPasswordHash(key, salt)
|
||||||
self.__saveConfig()
|
return key.split("$")
|
||||||
|
|
||||||
def __saveConfig(self):
|
def __saveConfig(self):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with open (self.config_dir + '/pyqcrm.toml', 'w') as f:
|
with open (self.config_dir + '/pyqcrm.toml', 'w') as f:
|
||||||
config = Vermasseln().oscarVermasseln(toml.dumps(self.__config))
|
config = Vermasseln().oscarVermasseln(toml.dumps(self.__config))
|
||||||
|
|||||||
7
main.py
7
main.py
@@ -30,7 +30,8 @@ am = None
|
|||||||
bm = None
|
bm = None
|
||||||
user = None
|
user = None
|
||||||
|
|
||||||
def initializeProgram():
|
def initializeProgram(conf_ok):
|
||||||
|
if conf_ok:
|
||||||
global am, bad_config, bm, user
|
global am, bad_config, bm, user
|
||||||
dbconf = config.getConfig()['database']
|
dbconf = config.getConfig()['database']
|
||||||
DbManager(dbconf)
|
DbManager(dbconf)
|
||||||
@@ -38,8 +39,10 @@ def initializeProgram():
|
|||||||
bm = BusinessModel()
|
bm = BusinessModel()
|
||||||
user = UserManager()
|
user = UserManager()
|
||||||
am = AddressModel()
|
am = AddressModel()
|
||||||
|
|
||||||
publishContext()
|
publishContext()
|
||||||
|
else:
|
||||||
|
# TODO: show message and exit program
|
||||||
|
print("Kein Zugriff auf die Datenbank")
|
||||||
|
|
||||||
def publishContext():
|
def publishContext():
|
||||||
global engine
|
global engine
|
||||||
|
|||||||
Reference in New Issue
Block a user