#include "bs_util.h" using namespace std; void jsonfail_func(json& j,int errcode,const std::string& detail) { j["success"]=0; j["errcode"]=errcode; j["errmsg"]=string(GetErrMsg(errcode))+" : "+detail; } int getPermissionLevel(const std::string& Username,Response& res) { DBInfo db; MySQLConn conn; json j; bool failed=false; auto jsonfail=[&](int errcode,const std::string& detail="") { jsonfail_func(j,errcode,detail); failed=true; }; if( db.readConfig()<0 ) { jsonfail(err_config); } else if(db.connectProxy(conn)<0) { jsonfail(err_connect); } else { int permission_level; int ret=conn.exec(make_str("select permission_level from bs_user where username='", Username, "'"), [&](MySQLResult& res) { res.stepRow([&](char** val,unsigned long* len) { permission_level=ParseInt(val[0]); }); }); if(ret==1) { jsonfail(err_data,"User Not Found"); } else if(ret<0) { jsonfail(err_sql,"Step 1"); } else { return permission_level; } } if(failed) { res.content=j.dump(); exit(0); /// Never reaches here. return -1; } else { return -1; } } std::function SQLParseInt(int& nval) { return [&](MySQLResult& res) { res.stepRow([&](char** val,unsigned long* len) { nval=ParseInt(val[0]); }); }; }