mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2024-11-14 04:57:21 +01:00
Moved the session registration/deregistration code to users.
This commit is contained in:
parent
fbd442317e
commit
03276bdc26
@ -69,6 +69,8 @@ void FileBasedUser::load(const std::string &p_name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void FileBasedUser::load() {
|
void FileBasedUser::load() {
|
||||||
|
unregister_sessions();
|
||||||
|
|
||||||
FILE *f = fopen(_file_path.c_str(), "r");
|
FILE *f = fopen(_file_path.c_str(), "r");
|
||||||
|
|
||||||
if (!f) {
|
if (!f) {
|
||||||
@ -108,6 +110,8 @@ void FileBasedUser::load() {
|
|||||||
for (rapidjson::Value::ConstValueIterator itr = sess.Begin(); itr != sess.End(); ++itr) {
|
for (rapidjson::Value::ConstValueIterator itr = sess.Begin(); itr != sess.End(); ++itr) {
|
||||||
sessions.push_back(itr->GetString());
|
sessions.push_back(itr->GetString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
register_sessions();
|
||||||
}
|
}
|
||||||
|
|
||||||
FileBasedUser::FileBasedUser() :
|
FileBasedUser::FileBasedUser() :
|
||||||
|
@ -1,11 +1,15 @@
|
|||||||
#include "user.h"
|
#include "user.h"
|
||||||
|
|
||||||
void User::save() {
|
#include "core/http/http_session.h"
|
||||||
|
#include "core/http/session_manager.h"
|
||||||
|
|
||||||
|
void User::save() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void User::load() {
|
void User::load() {
|
||||||
|
//unregister_sessions()
|
||||||
|
//load_code
|
||||||
|
//register_sessions()
|
||||||
}
|
}
|
||||||
|
|
||||||
void User::load(const std::string &p_name) {
|
void User::load(const std::string &p_name) {
|
||||||
@ -19,7 +23,44 @@ void User::changed() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void User::update() {
|
void User::update() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void User::register_sessions() {
|
||||||
|
if (sessions.size() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SessionManager *sm = SessionManager::get_singleton();
|
||||||
|
|
||||||
|
if (!sm) {
|
||||||
|
printf("ERROR: UserManager::add_user SessionManager singleton is null, please allocate one!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < sessions.size(); ++i) {
|
||||||
|
HTTPSession *session = new HTTPSession();
|
||||||
|
session->session_id = sessions[i];
|
||||||
|
session->add_object("user", this);
|
||||||
|
|
||||||
|
sm->add_session(session);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void User::unregister_sessions() {
|
||||||
|
if (sessions.size() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SessionManager *sm = SessionManager::get_singleton();
|
||||||
|
|
||||||
|
if (!sm) {
|
||||||
|
printf("ERROR: UserManager::remove_user SessionManager singleton is null, please allocate one!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < sessions.size(); ++i) {
|
||||||
|
sm->delete_session(sessions[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
User::User() :
|
User::User() :
|
||||||
@ -32,4 +73,5 @@ User::User() :
|
|||||||
}
|
}
|
||||||
|
|
||||||
User::~User() {
|
User::~User() {
|
||||||
|
unregister_sessions();
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,9 @@ public:
|
|||||||
virtual void changed();
|
virtual void changed();
|
||||||
virtual void update();
|
virtual void update();
|
||||||
|
|
||||||
|
void register_sessions();
|
||||||
|
void unregister_sessions();
|
||||||
|
|
||||||
User();
|
User();
|
||||||
~User();
|
~User();
|
||||||
};
|
};
|
||||||
|
@ -16,21 +16,6 @@ void UserManager::add_user(User *user) {
|
|||||||
|
|
||||||
_users_vec.push_back(user);
|
_users_vec.push_back(user);
|
||||||
_users[user->name] = user;
|
_users[user->name] = user;
|
||||||
|
|
||||||
SessionManager *sm = SessionManager::get_singleton();
|
|
||||||
|
|
||||||
if (!sm) {
|
|
||||||
printf("ERROR: UserManager::add_user SessionManager singleton is null, please allocate one!\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < user->sessions.size(); ++i) {
|
|
||||||
HTTPSession *session = new HTTPSession();
|
|
||||||
session->session_id = user->sessions[i];
|
|
||||||
session->add_object("user", user);
|
|
||||||
|
|
||||||
sm->add_session(session);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserManager::remove_user(User *user) {
|
void UserManager::remove_user(User *user) {
|
||||||
@ -50,17 +35,6 @@ void UserManager::remove_user(User *user) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SessionManager *sm = SessionManager::get_singleton();
|
|
||||||
|
|
||||||
if (!sm) {
|
|
||||||
printf("ERROR: UserManager::remove_user SessionManager singleton is null, please allocate one!\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < user->sessions.size(); ++i) {
|
|
||||||
sm->delete_session(user->sessions[i]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserManager::clear() {
|
void UserManager::clear() {
|
||||||
@ -69,15 +43,7 @@ void UserManager::clear() {
|
|||||||
std::lock_guard<std::mutex> lock(_mutex);
|
std::lock_guard<std::mutex> lock(_mutex);
|
||||||
|
|
||||||
for (int i = 0; i < _users_vec.size(); ++i) {
|
for (int i = 0; i < _users_vec.size(); ++i) {
|
||||||
User *user = _users_vec[i];
|
delete _users_vec[i];
|
||||||
|
|
||||||
if (sm) {
|
|
||||||
for (int i = 0; i < user->sessions.size(); ++i) {
|
|
||||||
sm->delete_session(user->sessions[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
delete user;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_users.clear();
|
_users.clear();
|
||||||
|
Loading…
Reference in New Issue
Block a user