diff --git a/ServidorTFG.pro.user b/ServidorTFG.pro.user index c55a96e..73f1366 100644 --- a/ServidorTFG.pro.user +++ b/ServidorTFG.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/data_acces.h b/data_acces.h index 9de06cf..0d5205f 100644 --- a/data_acces.h +++ b/data_acces.h @@ -14,6 +14,7 @@ public: virtual void write_install(std::string package, std::string user)=0; virtual void write_remove(std::string)=0; virtual bool get_package_exists(std::string package)=0; + virtual void create_user(std::string user, std::string pass, bool admin)=0; }; #endif // DATA_ACCES_H diff --git a/msql_acces.cpp b/msql_acces.cpp index 519110a..f3002be 100644 --- a/msql_acces.cpp +++ b/msql_acces.cpp @@ -89,3 +89,11 @@ bool msql_acces::get_package_exists(std::string package){ return ret>0; } + +void msql_acces::create_user(std::string user, std::string pass, bool admin){ + sql::PreparedStatement *pstmt = con->prepareStatement("insert into users(username, passwd, admin) values(?, ?, ?)"); + pstmt->setString(1,user); + pstmt->setString(2,pass); + pstmt->setBoolean(3,admin); + sql::ResultSet *res = pstmt->executeQuery(); +} diff --git a/msql_acces.h b/msql_acces.h index d0f72c5..2bf1318 100644 --- a/msql_acces.h +++ b/msql_acces.h @@ -18,6 +18,7 @@ public: void write_install(std::string package, std::string user); void write_remove(std::string); bool get_package_exists(std::string package); + void create_user(std::string user, std::string pass, bool admin); private: sql::Connection *con; sql::Driver *driver; diff --git a/session_manager.cpp b/session_manager.cpp index e1e02af..5908e8c 100644 --- a/session_manager.cpp +++ b/session_manager.cpp @@ -31,7 +31,7 @@ bool session_manager::validate_pass(){ void session_manager::start_dialog(){ char* buffer = new char[5]; while(true){ - this->read_data(buffer,5); + int n_read=this->read_data(buffer,5); if(strcmp(buffer, "exec")==0){ this->execute(); }else if(strcmp(buffer, "info")==0){ @@ -40,7 +40,9 @@ void session_manager::start_dialog(){ this->remove(); }else if(strcmp(buffer,"uinf")==0){ this->send_user_info(); - }else if(strcmp(buffer,"exit")==0){ + }else if(strcmp(buffer,"cusr")==0){ + this->create_user(); + }else if((strcmp(buffer,"exit")==0)||(n_read==0)){ break; } } @@ -129,6 +131,19 @@ void session_manager::send_user_info(){ this->write_data("end:info"); } +void session_manager::create_user(){ + char* user=new char[256]; + char* pass=new char[256]; + char* admin=new char[256]; + this->read_data(user, 256); + this->read_data(pass, 256); + this->read_data(admin, 256); + this->data->create_user(std::string(user), std::string(pass), admin[0]=='t'); + delete [] (user); + delete [] (pass); + delete [] (admin); +} + int session_manager::read_data(char* input, int size){ return read(this->fd, input, size); } diff --git a/session_manager.h b/session_manager.h index 008096a..b91fa6c 100644 --- a/session_manager.h +++ b/session_manager.h @@ -12,6 +12,7 @@ public: void send_information(); void send_user_info(); bool validate_pass(); + void create_user(); private: std::string appli_command(char comand[], char* n_package); virtual int read_data(char* input, int size);