userver: userver/server/auth/user_env.hpp Source File
Loading...
Searching...
No Matches
user_env.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/server/auth/user_env.hpp
4/// @brief @copybrief server::auth::UserEnv
5
6#include <stdexcept>
7#include <string>
8
9#include <userver/formats/parse/to.hpp>
10#include <userver/utils/assert.hpp>
11
12USERVER_NAMESPACE_BEGIN
13
14namespace server::handlers::auth {
15class AuthCheckerBase;
16}
17
18namespace server::auth {
19
20/// @brief Authorization environments for users
21enum class UserEnv : int {
22 kProd,
23 kTest,
24 kProdYateam,
25 kTestYateam,
26 kStress,
27};
28
29template <class Value>
30UserEnv Parse(const Value& v, formats::parse::To<UserEnv>) {
31 const std::string env_name = v.template As<std::string>();
32 if (env_name == "Prod" || env_name == "Mimino") {
33 return UserEnv::kProd;
34 } else if (env_name == "Test") {
35 return UserEnv::kTest;
36 } else if (env_name == "ProdYateam") {
37 return UserEnv::kProdYateam;
38 } else if (env_name == "TestYateam") {
39 return UserEnv::kTestYateam;
40 } else if (env_name == "Stress") {
41 return UserEnv::kStress;
42 }
43
44 UASSERT_MSG(false, "Unknown user env");
45 throw std::runtime_error("Unknown user env " + env_name);
46}
47
48std::string ToString(UserEnv env);
49
50} // namespace server::auth
51
52USERVER_NAMESPACE_END