userver: userver/server/auth/user_auth_info.hpp Source File
Loading...
Searching...
No Matches
user_auth_info.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/server/auth/user_auth_info.hpp
4/// @brief @copybrief server::auth::UserAuthInfo
5
6#include <optional>
7#include <string>
8
9#include <userver/server/request/request_context.hpp>
10#include <userver/utils/strong_typedef.hpp>
11
12#include <userver/server/auth/user_env.hpp>
13#include <userver/server/auth/user_id.hpp>
14#include <userver/server/auth/user_provider.hpp>
15#include <userver/server/auth/user_scopes.hpp>
16
17USERVER_NAMESPACE_BEGIN
18
19namespace server::handlers::auth {
20class AuthCheckerBase;
21}
22
23namespace server::auth {
24
25/// @brief Authenticated user data attached to a request
26class UserAuthInfo final {
27public:
28 using Ticket = utils::NonLoggable<class TicketTag, std::string>;
29
30 UserAuthInfo(UserId default_id, UserEnv env, UserProvider provider);
31 UserAuthInfo(UserId default_id, Ticket user_ticket, UserEnv env, UserProvider provider);
32
33 UserAuthInfo(UserId default_id, UserIds ids, UserScopes scopes, UserEnv env, UserProvider provider);
34 UserAuthInfo(
35 UserId default_id,
36 UserIds ids,
37 UserScopes scopes,
38 Ticket user_ticket,
39 UserEnv env,
40 UserProvider provider
41 );
42
43 UserId GetDefaultUserId() const;
44 const UserIds& GetUserIds() const;
45 const std::optional<UserScopes>& GetUserScopesOptional() const;
46 const std::optional<Ticket>& GetTicketOptional() const;
47 UserEnv GetUserEnv() const { return user_env_; }
48 UserProvider GetUserProvider() const { return user_provider_; }
49
50private:
51 friend class server::handlers::auth::AuthCheckerBase;
52 static void Set(server::request::RequestContext& request_context, UserAuthInfo&& info);
53
54 UserId default_id_;
55 UserIds ids_;
56 std::optional<UserScopes> scopes_;
57 std::optional<Ticket> user_ticket_;
58 UserEnv user_env_;
59 UserProvider user_provider_;
60};
61
62const UserAuthInfo& GetUserAuthInfo(const server::request::RequestContext& request_context);
63
64std::optional<UserAuthInfo> GetUserAuthInfoOpt(const server::request::RequestContext& request_context);
65
66} // namespace server::auth
67
68USERVER_NAMESPACE_END