aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/tvmauth/client/misc/checker.h
diff options
context:
space:
mode:
Diffstat (limited to 'library/cpp/tvmauth/client/misc/checker.h')
-rw-r--r--library/cpp/tvmauth/client/misc/checker.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/library/cpp/tvmauth/client/misc/checker.h b/library/cpp/tvmauth/client/misc/checker.h
new file mode 100644
index 0000000000..e8ed2f5503
--- /dev/null
+++ b/library/cpp/tvmauth/client/misc/checker.h
@@ -0,0 +1,67 @@
+#pragma once
+
+#include "async_updater.h"
+
+#include <library/cpp/tvmauth/client/exception.h>
+
+#include <library/cpp/tvmauth/checked_service_ticket.h>
+#include <library/cpp/tvmauth/checked_user_ticket.h>
+
+namespace NTvmAuth {
+ class TServiceTicketChecker {
+ public:
+ TServiceTicketChecker(TAsyncUpdaterPtr updater)
+ : Updater_(std::move(updater))
+ {
+ Y_ENSURE(Updater_);
+ GetCache();
+ }
+
+ /*!
+ * Checking must be enabled in TClientSettings
+ * Can throw exception if cache is out of date or wrong config
+ * @param ticket
+ */
+ TCheckedServiceTicket Check(TStringBuf ticket) const {
+ return GetCache()->Check(ticket);
+ }
+
+ private:
+ TServiceContextPtr GetCache() const {
+ TServiceContextPtr c = Updater_->GetCachedServiceContext();
+ Y_ENSURE_EX(c, TBrokenTvmClientSettings() << "Need to use TClientSettings::EnableServiceTicketChecking()");
+ return c;
+ }
+
+ private:
+ TAsyncUpdaterPtr Updater_;
+ };
+
+ class TUserTicketChecker {
+ public:
+ TUserTicketChecker(TAsyncUpdaterPtr updater)
+ : Updater_(std::move(updater))
+ {
+ Y_ENSURE(Updater_);
+ GetCache({});
+ }
+
+ /*!
+ * Blackbox enviroment must be cofingured in TClientSettings
+ * Can throw exception if cache is out of date or wrong config
+ */
+ TCheckedUserTicket Check(TStringBuf ticket, TMaybe<EBlackboxEnv> overridenEnv) const {
+ return GetCache(overridenEnv)->Check(ticket);
+ }
+
+ private:
+ TUserContextPtr GetCache(TMaybe<EBlackboxEnv> overridenEnv) const {
+ TUserContextPtr c = Updater_->GetCachedUserContext(overridenEnv);
+ Y_ENSURE_EX(c, TBrokenTvmClientSettings() << "Need to use TClientSettings::EnableUserTicketChecking()");
+ return c;
+ }
+
+ private:
+ TAsyncUpdaterPtr Updater_;
+ };
+}