ImagingTools Core SDK
IJwtSessionController.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ACF includes
6#include <istd/IPolymorphic.h>
7
8// ImtCore includes
9#include <imtauth/ISession.h>
10
11
12namespace imtauth
13{
14
15
16class IJwtSessionController: virtual public istd::IPolymorphic
17{
18public:
19 struct UserSession
20 {
21 QByteArray userId;
22 QByteArray accessToken;
23 QByteArray refreshToken;
24 };
25
26 enum JwtState
27 {
28 JS_NONE,
29 JS_OK,
30 JS_EXPIRED,
31 JS_INVALID
32 };
33
34 virtual bool ValidateSession(const QByteArray& sessionId) const = 0;
35 virtual JwtState ValidateJwt(const QByteArray& jwt) const = 0;
36 virtual bool RefreshToken(const QByteArray& refreshToken, UserSession& outputData) const = 0;
37 virtual bool CreateNewSession(const QByteArray& userId, UserSession& outputData) const = 0;
38 virtual ISessionSharedPtr GetSession(const QByteArray& sessionId) const = 0;
39 virtual bool RemoveSession(const QByteArray& sessionId) const = 0;
40 virtual QByteArray GetUserFromJwt(const QByteArray& jwt) const = 0;
41 virtual QByteArray GetSessionFromJwt(const QByteArray& jwt) const = 0;
42};
43
44
45} // namespace imtauth
46
47