aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/tvmauth/client/misc/checker.h
diff options
context:
space:
mode:
authorkomels <komels@yandex-team.ru>2022-04-14 13:10:53 +0300
committerkomels <komels@yandex-team.ru>2022-04-14 13:10:53 +0300
commit21c9b0e6b039e9765eb414c406c2b86e8cea6850 (patch)
treef40ebc18ff8958dfbd189954ad024043ca983ea5 /library/cpp/tvmauth/client/misc/checker.h
parent9a4effa852abe489707139c2b260dccc6f4f9aa9 (diff)
downloadydb-21c9b0e6b039e9765eb414c406c2b86e8cea6850.tar.gz
Final part on compatibility layer: LOGBROKER-7215
ref:777c67aadbf705d19034a09a792b2df61ba53697
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_;
+ };
+}