From df772fec5704dc3ecef296487f4c92cfbdcbd608 Mon Sep 17 00:00:00 2001
From: groche97 <groche97@gmail.com>
Date: Tue, 26 May 2020 18:48:31 +0200
Subject: [PATCH] add normal user restrictions

---
 data_acces.h        |  1 +
 msql_acces.cpp      | 11 +++++++++++
 msql_acces.h        |  1 +
 session_manager.cpp |  5 +++++
 4 files changed, 18 insertions(+)

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<std::string> get_pinfo()=0;
   virtual std::list<std::string> 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<std::string> 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<std::string> get_pinfo();
   std::list<std::string> 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{