diff --git a/data_acces.h b/data_acces.h index 29c17a9..c0525f5 100644 --- a/data_acces.h +++ b/data_acces.h @@ -9,6 +9,7 @@ class data_acces public: data_acces(); virtual std::string get_passwd(std::string username) = 0; + virtual bool get_admin(std::string)=0; virtual std::list get_pinfo()=0; virtual std::list get_uinfo()=0; virtual void write_install(std::string package, std::string user)=0; diff --git a/msql_acces.cpp b/msql_acces.cpp index c3558a4..d4c2cc5 100644 --- a/msql_acces.cpp +++ b/msql_acces.cpp @@ -19,6 +19,17 @@ std::string msql_acces::get_passwd(std::string username){ return ret; } +bool msql_acces::get_admin(std::string username){ + sql::PreparedStatement *pstmt = con->prepareStatement("select admin from users where username=?"); + pstmt->setString(1,username); + sql::ResultSet *res = pstmt->executeQuery(); + bool ret=false; + while(res->next()) + ret = res->getBoolean("admin"); + delete res; + return ret; +} + std::list msql_acces::get_pinfo(){ sql::PreparedStatement *pstmt = con->prepareStatement("select packages.name, packages.created, packages.uses, users.username " diff --git a/msql_acces.h b/msql_acces.h index ad96bce..60ed05b 100644 --- a/msql_acces.h +++ b/msql_acces.h @@ -13,6 +13,7 @@ class msql_acces : public data_acces public: msql_acces(); std::string get_passwd(std::string username); + bool get_admin(std::string); std::list get_pinfo(); std::list get_uinfo(); void write_install(std::string package, std::string user); diff --git a/session_manager.cpp b/session_manager.cpp index fb171f9..6a32d5f 100644 --- a/session_manager.cpp +++ b/session_manager.cpp @@ -20,6 +20,11 @@ bool session_manager::validate_pass(){ std::string pass=buffer; if(this->data->get_passwd(user)==pass){ this->write_data("pass"); + if(this->data->get_admin(user)){ + this->write_data("admin"); + }else{ + this->write_data("norma"); + } this->user=user; return true; }else{