OpenTwin 0.1
OpenTwin
 
Loading...
Searching...
No Matches
LogInDialog.h
Go to the documentation of this file.
1
4// ###########################################################################################################################################################################################################################################################################################################################
5
6#pragma once
7
8// Frontend header
9#include "LoginData.h"
10#include "LogInGSSEntry.h"
11#include "UserManagement.h"
12
13// OpenTwin header
14#include "OTCore/Flags.h"
15#include "OTWidgets/Dialog.h"
16
17// Qt header
18#include <QtCore/qstring.h>
19
20// std header
21#include <vector>
22
23class QSettings;
24
25namespace ot {
26 class Label;
27 class CheckBox;
28 class LineEdit;
29 class ComboBox;
30 class PushButton;
31}
32
33class LogInDialog : public ot::Dialog {
34 Q_OBJECT
35public:
37 virtual ~LogInDialog();
38
39 void setControlsEnabled(bool _enabled);
40
41 const LoginData& getLoginData(void) const { return m_loginData; };
42
43protected:
44 virtual bool mayCloseDialogWindow(void) const override;
45
46private:
47 enum class LogInStateFlag {
48 NoState = 0x00,
49 RestoredPassword = 0x01,
50 WorkerRunning = 0x02,
51 LogInSuccess = 0x04,
52
53 RegisterMode = 0x10,
54 ChangePasswordMode = 0x20
55 };
56 typedef ot::Flags<LogInStateFlag> LogInState;
57
58 enum class WorkerError {
59 NoError,
60 GSSConnectionFailed,
61 IncompatibleVersions,
62 InvalidGssResponse,
63 InvalidGssResponseSyntax,
64 AuthorizationConnetionFailed,
65 InvalidCreadentials,
66 DatabaseConnectionFailed,
67 InvalidData,
68 FailedToRegister,
69 FailedToChangePassword
70 };
71
72 LogInState m_state;
73 int m_logInAttempt;
74
75 LoginData m_loginData;
76
77 ot::ComboBox* m_gss;
78 ot::LineEdit* m_username;
79 ot::Label* m_passwordLabel;
80 ot::LineEdit* m_password; // LogIn, Register:1, Change:Old
81 ot::Label* m_passwordNewLabel;
82 ot::LineEdit* m_passwordNew; // Change:New
83 ot::Label* m_passwordConfirmLabel;
84 ot::LineEdit* m_passwordConfirm; // Register:Confirm, Change:Confirm
85 ot::CheckBox* m_savePassword;
86 ot::Label* m_toggleChangePasswordModeLabel;
87 ot::Label* m_toggleRegisterModeLabel;
88 ot::PushButton* m_logInButton;
89 ot::PushButton* m_changePasswordButton;
90 ot::PushButton* m_registerButton;
91 ot::PushButton* m_exitButton;
92
93 QString m_restoredPassword;
94
95 std::string m_databaseUrl;
96 std::string m_authorizationServiceUrl;
97
98 std::vector<LogInGSSEntry> m_gssData;
99
100 // ###########################################################################################################################################################################################################################################################################################################################
101
102 // Private slots
103
104private Q_SLOTS:
105 void slotLogIn(void);
106 void slotRegister(void);
107 void slotChangePassword(void);
108 void slotCancel(void);
109 void slotToggleLogInAndRegisterMode(void);
110 void slotToggleChangePasswordMode(void);
111 void slotGSSChanged(void);
112 void slotPasswordChanged(void);
113
114 void slotLogInSuccess(void);
115 void slotRegisterSuccess(void);
116 void slotChangePasswordSuccess(void);
117 void slotWorkerError(WorkerError _error);
118
119 // ###########################################################################################################################################################################################################################################################################################################################
120
121 // Private helper
122
123private:
124 void saveUserSettings(void) const;
125
126 LogInGSSEntry findCurrentGssEntry(void);
127 void initializeGssData(std::shared_ptr<QSettings> _settings);
128 void updateGssOptions(void);
129
130 // ###########################################################################################################################################################################################################################################################################################################################
131
132 // Async worker
133
134 void stopWorkerWithError(WorkerError _error);
135
136 void loginWorkerStart(void);
137 void registerWorkerStart(void);
138 void changePasswordWorkerStart(void);
139 WorkerError workerCheckVersionCompatibility(void);
140 WorkerError workerConnectToGSS(void);
141 WorkerError workerLogin(const UserManagement& _userManager);
142 WorkerError workerRegister(const UserManagement& _userManager);
143 WorkerError workerChangePassword(const UserManagement& _userManager);
144
145 OT_ADD_FRIEND_FLAG_FUNCTIONS(LogInDialog::LogInStateFlag)
146};
#define OT_ADD_FRIEND_FLAG_FUNCTIONS(___enumName)
Will add the default bitwise operations for the provided private 32/64 bit bitfield....
Definition Flags.h:182
Definition LogInDialog.h:33
const LoginData & getLoginData(void) const
Definition LogInDialog.h:41
virtual bool mayCloseDialogWindow(void) const override
Definition LogInDialog.cpp:214
LogInDialog()
Definition LogInDialog.cpp:48
void setControlsEnabled(bool _enabled)
Definition LogInDialog.cpp:199
virtual ~LogInDialog()
Definition LogInDialog.cpp:195
Definition LogInGSSEntry.h:11
Definition LoginData.h:14
Definition UserManagement.h:22
Definition CheckBox.h:17
Definition ComboBox.h:17
Definition Dialog.h:19
The Flags class is a wrapper around a enum that allows bitwise operations (flags)....
Definition Flags.h:214
Definition Label.h:17
Definition LineEdit.h:17
Definition PushButton.h:17
Definition Connector.h:8