6#include <ilog/TLoggerCompWrap.h>
7#include <ifile/IFileNameParam.h>
8#include <iprm/INameParam.h>
11#include <imtauth/IJwtSessionController.h>
12#include <imtbase/IObjectCollection.h>
19class CJwtSessionControllerComp:
20 public ilog::CLoggerComponentBase,
21 virtual public imtauth::IJwtSessionController
24 typedef icomp::CComponentBase BaseClass;
26 I_BEGIN_COMPONENT(CJwtSessionControllerComp);
27 I_REGISTER_INTERFACE(imtauth::IJwtSessionController);
28 I_ASSIGN(m_sessionCollectionCompPtr,
"SessionCollection",
"Session collection",
true,
"SessionCollection");
29 I_ASSIGN(m_sessionFactoryCompPtr,
"SessionFactory",
"Session factory",
true,
"SessionFactory");
30 I_ASSIGN(m_secretKeyParamCompPtr,
"SecretKeyParam",
"Secret key param",
true,
"SecretKeyParam");
31 I_ASSIGN(m_refreshTokenLifetimeAttrPtr,
"RefreshTokenLifetime",
"Refresh token Lifetime (in secs)",
false, 86400);
32 I_ASSIGN(m_jwtLifetimeAttrPtr,
"JwtLifetime",
"JWT Lifetime (in secs)",
false, 3600);
37 virtual bool ValidateSession(
const QByteArray& sessionId)
const override;
38 virtual JwtState ValidateJwt(
const QByteArray& token)
const override;
39 virtual bool RefreshToken(
const QByteArray& refreshToken, UserSession& userSession)
const override;
40 virtual bool CreateNewSession(
const QByteArray& userId, UserSession& userSession)
const override;
41 virtual ISessionSharedPtr GetSession(
const QByteArray& sessionId)
const override;
42 virtual bool RemoveSession(
const QByteArray& sessionId)
const override;
43 virtual QByteArray GetUserFromJwt(
const QByteArray& jwt)
const override;
44 virtual QByteArray GetSessionFromJwt(
const QByteArray& jwt)
const override;
47 QByteArray JsonObjectToBase64(
const QJsonObject&
object)
const;
48 QJsonObject JsonObjectFromBase64(
const QByteArray& data)
const;
49 QByteArray InsertNewSession(
const istd::IChangeable&
object)
const;
50 QByteArray CreateSignature(
const QByteArray& headerBase64,
const QByteArray& payloadBase64)
const;
51 QByteArray GenerateJwt(
const QByteArray& sessionId,
const QByteArray& userId)
const;
52 QByteArray GetSessionIdByRefreshToken(
const QByteArray& refreshToken)
const;
56 I_REF(iprm::INameParam, m_secretKeyParamCompPtr);
58 I_ATTR(
int, m_refreshTokenLifetimeAttrPtr);
59 I_ATTR(
int, m_jwtLifetimeAttrPtr);