Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
server_database_interface.h
Go to the documentation of this file.
1#ifndef SERVER_DATABASE_INTERFACE_H
2#define SERVER_DATABASE_INTERFACE_H
3
4#include "libcockatrice/protocol/pb/serverinfo_user.pb.h"
5#include "server.h"
6
7#include <QMap>
8#include <QObject>
9#include <QString>
10#include <QStringList>
11#include <QtGlobal>
12#include <qtmetamacros.h>
13
14class DeckList;
15class GameReplay;
16class ServerInfo_Game;
18template <typename T> class QList;
19template <typename T> class QSet;
20
21class Server_DatabaseInterface : public QObject
22{
23 Q_OBJECT
24public:
25 explicit Server_DatabaseInterface(QObject *parent = nullptr) : QObject(parent)
26 {
27 }
28
30 const QString &user,
31 const QString &password,
32 const QString &clientId,
33 QString &reasonStr,
34 int &secondsLeft,
35 bool passwordNeedsHash) = 0;
36 virtual bool checkUserIsBanned(const QString & /* ipAddress */,
37 const QString & /* userName */,
38 const QString & /* clientId */,
39 QString & /* banReason */,
40 int & /* banSecondsRemaining */)
41 {
42 return false;
43 }
44 virtual bool activeUserExists(const QString & /* user */)
45 {
46 return false;
47 }
48 virtual bool userExists(const QString & /* user */)
49 {
50 return false;
51 }
52 virtual QString getUserSalt(const QString & /* user */)
53 {
54 return {};
55 }
56 virtual QString getUserPasswordData(const QString & /* user */)
57 {
58 return {};
59 }
60 virtual bool submitPasswordVerifier(const QString & /* user */, const QString & /* passwordVerifier */)
61 {
62 return false;
63 }
64 virtual QMap<QString, ServerInfo_User> getBuddyList(const QString & /* name */)
65 {
67 }
68 virtual QMap<QString, ServerInfo_User> getIgnoreList(const QString & /* name */)
69 {
71 }
72 virtual bool isInBuddyList(const QString & /* whoseList */, const QString & /* who */)
73 {
74 return false;
75 }
76 virtual bool isInIgnoreList(const QString & /* whoseList */, const QString & /* who */)
77 {
78 return false;
79 }
80 virtual ServerInfo_User getUserData(const QString &name, bool withId = false) = 0;
81 virtual void storeGameInformation(const QString & /* roomName */,
82 const QStringList & /* roomGameTypes */,
83 const ServerInfo_Game & /* gameInfo */,
84 const QSet<QString> & /* allPlayersEver */,
85 const QSet<QString> & /* allSpectatorsEver */,
86 const QList<GameReplay *> & /* replayList */)
87 {
88 }
89 virtual DeckList *getDeckFromDatabase(int /* deckId */, int /* userId */)
90 {
91 return 0;
92 }
93 virtual bool removeForgotPassword(const QString & /* user */)
94 {
95 return false;
96 }
97 virtual qint64 startSession(const QString & /* userName */,
98 const QString & /* address */,
99 const QString & /* clientId */,
100 const QString & /* connectionType */)
101 {
102 return 0;
103 }
104 virtual bool usernameIsValid(const QString & /*userName */, QString & /* error */)
105 {
106 return true;
107 }
108public slots:
109 virtual void endSession(qint64 /* sessionId */)
110 {
111 }
112
113public:
114 virtual int getNextGameId() = 0;
115 virtual int getNextReplayId() = 0;
116 virtual int getActiveUserCount(QString connectionType = QString()) = 0;
117
118 virtual void clearSessionTables()
119 {
120 }
121 virtual void lockSessionTables()
122 {
123 }
124 virtual void unlockSessionTables()
125 {
126 }
127 virtual bool userSessionExists(const QString & /* userName */)
128 {
129 return false;
130 }
131
133 {
134 return false;
135 }
136 virtual bool registerUser(const QString & /* userName */,
137 const QString & /* realName */,
138 const QString & /* password */,
139 bool /* passwordNeedsHash */,
140 const QString & /* emailAddress */,
141 const QString & /* country */,
142 bool /* active = false */)
143 {
144 return false;
145 }
146 virtual bool activateUser(const QString & /* userName */, const QString & /* token */)
147 {
148 return false;
149 }
150 virtual void updateUsersClientID(const QString & /* userName */, const QString & /* userClientID */)
151 {
152 }
153 virtual void updateUsersLastLoginData(const QString & /* userName */, const QString & /* clientVersion */)
154 {
155 }
156
165 virtual void logMessage(const int /* senderId */,
166 const QString & /* senderName */,
167 const QString & /* senderIp */,
168 const QString & /* logMessage */,
169 LogMessage_TargetType /* targetType */,
170 const int /* targetId */,
171 const QString & /* targetName */,
172 const QString & /* channel */ = QString())
173 {
174 }
175 virtual bool checkUserIsBanned(Server_ProtocolHandler * /* session */,
176 QString & /* banReason */,
177 int & /* banSecondsRemaining */)
178 {
179 return false;
180 }
181 virtual int checkNumberOfUserAccounts(const QString & /* email */)
182 {
183 return 0;
184 }
185 virtual bool
186 changeUserPassword(const QString & /* user */, const QString & /* password */, bool /* passwordNeedsHash */)
187 {
188 return false;
189 }
190 virtual bool changeUserPassword(const QString & /* user */,
191 const QString & /* oldPassword */,
192 bool /* oldPasswordNeedsHash */,
193 const QString & /* newPassword */,
194 bool /* newPasswordNeedsHash */)
195 {
196 return false;
197 }
198 virtual void setForcePasswordChange(const QString & /* user */, bool /* force */)
199 {
200 }
201
207 virtual bool isCardArtAllowed(const QString & /* cardName */, const QString & /* providerId */)
208 {
209 return true;
210 }
211};
212
213#endif
Represents a complete deck, including metadata, zones, cards, and sideboard plans.
Definition deck_list.h:67
Definition remote_connection_controller.h:20
Definition game.h:18
Definition dlg_manage_sets.h:29
virtual bool activeUserExists(const QString &)
Definition server_database_interface.h:44
virtual bool getRequireRegistration()
Definition server_database_interface.h:132
virtual void storeGameInformation(const QString &, const QStringList &, const ServerInfo_Game &, const QSet< QString > &, const QSet< QString > &, const QList< GameReplay * > &)
Definition server_database_interface.h:81
virtual int getActiveUserCount(QString connectionType=QString())=0
virtual bool userSessionExists(const QString &)
Definition server_database_interface.h:127
virtual int checkNumberOfUserAccounts(const QString &)
Definition server_database_interface.h:181
virtual DeckList * getDeckFromDatabase(int, int)
Definition server_database_interface.h:89
virtual void endSession(qint64)
Definition server_database_interface.h:109
virtual ServerInfo_User getUserData(const QString &name, bool withId=false)=0
virtual int getNextGameId()=0
virtual bool isInIgnoreList(const QString &, const QString &)
Definition server_database_interface.h:76
virtual void unlockSessionTables()
Definition server_database_interface.h:124
virtual QString getUserSalt(const QString &)
Definition server_database_interface.h:52
virtual QString getUserPasswordData(const QString &)
Definition server_database_interface.h:56
virtual int getNextReplayId()=0
virtual void clearSessionTables()
Definition server_database_interface.h:118
virtual void setForcePasswordChange(const QString &, bool)
Definition server_database_interface.h:198
virtual qint64 startSession(const QString &, const QString &, const QString &, const QString &)
Definition server_database_interface.h:97
virtual void lockSessionTables()
Definition server_database_interface.h:121
virtual bool registerUser(const QString &, const QString &, const QString &, bool, const QString &, const QString &, bool)
Definition server_database_interface.h:136
virtual bool changeUserPassword(const QString &, const QString &, bool)
Definition server_database_interface.h:186
virtual void updateUsersClientID(const QString &, const QString &)
Definition server_database_interface.h:150
LogMessage_TargetType
Definition server_database_interface.h:158
@ MessageTargetIslRoom
Definition server_database_interface.h:162
@ MessageTargetGame
Definition server_database_interface.h:160
@ MessageTargetRoom
Definition server_database_interface.h:159
@ MessageTargetRoomChannel
Definition server_database_interface.h:163
@ MessageTargetChat
Definition server_database_interface.h:161
virtual bool isCardArtAllowed(const QString &, const QString &)
Whether the given card art may be shown (card art rules).
Definition server_database_interface.h:207
virtual bool userExists(const QString &)
Definition server_database_interface.h:48
Server_DatabaseInterface(QObject *parent=nullptr)
Definition server_database_interface.h:25
virtual AuthenticationResult checkUserPassword(Server_ProtocolHandler *handler, const QString &user, const QString &password, const QString &clientId, QString &reasonStr, int &secondsLeft, bool passwordNeedsHash)=0
virtual bool submitPasswordVerifier(const QString &, const QString &)
Definition server_database_interface.h:60
virtual bool checkUserIsBanned(const QString &, const QString &, const QString &, QString &, int &)
Definition server_database_interface.h:36
virtual bool checkUserIsBanned(Server_ProtocolHandler *, QString &, int &)
Definition server_database_interface.h:175
virtual bool removeForgotPassword(const QString &)
Definition server_database_interface.h:93
virtual QMap< QString, ServerInfo_User > getBuddyList(const QString &)
Definition server_database_interface.h:64
virtual void logMessage(const int, const QString &, const QString &, const QString &, LogMessage_TargetType, const int, const QString &, const QString &=QString())
Definition server_database_interface.h:165
virtual bool changeUserPassword(const QString &, const QString &, bool, const QString &, bool)
Definition server_database_interface.h:190
virtual bool activateUser(const QString &, const QString &)
Definition server_database_interface.h:146
virtual bool usernameIsValid(const QString &, QString &)
Definition server_database_interface.h:104
virtual void updateUsersLastLoginData(const QString &, const QString &)
Definition server_database_interface.h:153
virtual bool isInBuddyList(const QString &, const QString &)
Definition server_database_interface.h:72
virtual QMap< QString, ServerInfo_User > getIgnoreList(const QString &)
Definition server_database_interface.h:68
Definition server_protocolhandler.h:40
AuthenticationResult
Definition server.h:34
Definition game_replay.proto:4
Definition serverinfo_game.proto:5
Definition serverinfo_user.proto:2