MySQL 9.3.0
Source Code Documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
mrs::users::UserManager Class Reference

#include <user_manager.h>

Public Types

using PolicyLru = helper::cache::policy::Lru
 
using AuthUser = database::entry::AuthUser
 
using UserId = AuthUser::UserId
 
using UserIndex = AuthUser::UserIndex
 
using Cache = helper::cache::Cache< UserIndex, AuthUser, 100, PolicyLru >
 
using Handler = mrs::interface::AuthorizeHandler
 
using SqlSessionCache = Handler::SqlSessionCached
 
using ChangedUsersIds = std::vector< std::pair< database::entry::UniversalId, std::string > >
 
using QueryFactory = mrs::interface::QueryFactory
 

Public Member Functions

 UserManager (const bool limit_to_existing_users, const helper::Optional< UniversalId > &default_role_id, QueryFactory *query_factory)
 
bool user_get_by_id (UserId user_id, AuthUser *out_user, SqlSessionCache *out_cache)
 
bool user_get (AuthUser *out_user, SqlSessionCache *out_cache, const bool update_changed=true)
 Find the user data inside a cache or DB. More...
 
void update_email (SqlSessionCache *out_cache, const UserId &id, const std::optional< std::string > &email)
 
void user_invalidate (const UserId id)
 
void update_users_cache (const ChangedUsersIds &changed_users_ids)
 

Private Member Functions

bool query_update_user (SqlSessionCache *out_cache, const UserId user_id, AuthUser *out_user)
 
bool query_insert_user (SqlSessionCache *out_cache, AuthUser *out_user)
 
AuthUserquery_user (SqlSessionCache *out_cache, AuthUser *out_user, bool *out_is_different)
 
AuthUsercache_get (AuthUser *out_user, bool *out_is_different)
 

Private Attributes

std::shared_mutex mutex_query_database_
 
std::shared_mutex mutex_user_cache_
 
Cache user_cache_
 
bool limit_to_existing_users_
 
const helper::Optional< UniversalIddefault_role_id_
 
QueryFactoryquery_factory_
 

Member Typedef Documentation

◆ AuthUser

using mrs::users::UserManager::AuthUser = database::entry::AuthUser

◆ Cache

◆ ChangedUsersIds

using mrs::users::UserManager::ChangedUsersIds = std::vector<std::pair<database::entry::UniversalId, std::string> >

◆ Handler

◆ PolicyLru

◆ QueryFactory

◆ SqlSessionCache

◆ UserId

using mrs::users::UserManager::UserId = AuthUser::UserId

◆ UserIndex

using mrs::users::UserManager::UserIndex = AuthUser::UserIndex

Constructor & Destructor Documentation

◆ UserManager()

mrs::users::UserManager::UserManager ( const bool  limit_to_existing_users,
const helper::Optional< UniversalId > &  default_role_id,
QueryFactory query_factory 
)
inline

Member Function Documentation

◆ cache_get()

AuthUser * mrs::users::UserManager::cache_get ( AuthUser out_user,
bool *  out_is_different 
)
private

◆ query_insert_user()

bool mrs::users::UserManager::query_insert_user ( SqlSessionCache out_cache,
AuthUser out_user 
)
private

◆ query_update_user()

bool mrs::users::UserManager::query_update_user ( SqlSessionCache out_cache,
const UserId  user_id,
AuthUser out_user 
)
private

◆ query_user()

AuthUser * mrs::users::UserManager::query_user ( SqlSessionCache out_cache,
AuthUser out_user,
bool *  out_is_different 
)
private

◆ update_email()

void mrs::users::UserManager::update_email ( SqlSessionCache out_cache,
const UserId id,
const std::optional< std::string > &  email 
)

◆ update_users_cache()

void mrs::users::UserManager::update_users_cache ( const ChangedUsersIds changed_users_ids)

◆ user_get()

bool mrs::users::UserManager::user_get ( AuthUser out_user,
SqlSessionCache out_cache,
const bool  update_changed = true 
)

Find the user data inside a cache or DB.

If the user entry provided to the function differs from the entry found (cache/db), then the DB entry is updated. This behavior is provided for accounts that are imported/managed by other sources like in case of OAUTH2.

◆ user_get_by_id()

bool mrs::users::UserManager::user_get_by_id ( UserId  user_id,
AuthUser out_user,
SqlSessionCache out_cache 
)

◆ user_invalidate()

void mrs::users::UserManager::user_invalidate ( const UserId  id)

Member Data Documentation

◆ default_role_id_

const helper::Optional<UniversalId> mrs::users::UserManager::default_role_id_
private

◆ limit_to_existing_users_

bool mrs::users::UserManager::limit_to_existing_users_
private

◆ mutex_query_database_

std::shared_mutex mrs::users::UserManager::mutex_query_database_
private

◆ mutex_user_cache_

std::shared_mutex mrs::users::UserManager::mutex_user_cache_
private

◆ query_factory_

QueryFactory* mrs::users::UserManager::query_factory_
private

◆ user_cache_

Cache mrs::users::UserManager::user_cache_
private

The documentation for this class was generated from the following files: