diff --git a/src/authdb.cpp b/src/authdb.cpp
index 6442435b5337b8415a3460609fc12bac9c02b727..9d8f0fc937534e44cbcbe324b46226ab5aff16bc 100644
--- a/src/authdb.cpp
+++ b/src/authdb.cpp
@@ -85,7 +85,7 @@ namespace authdb {
if(strcmp(cur->fieldname,"username")==0){
try {
size_t upos=sizeof(authdb::AuthHeader);
- user.info(_Backend,&uid,udat,upos);
+ user.info(_Backend,uid,udat,upos);
userlist << "
";
std::copy(cur->data,cur->data+cur->datasize,std::back_inserter(userlist));
userlist << " |
"
@@ -200,6 +200,29 @@ namespace authdb {
rep.setContentType("text/html");
rep.setContentLength(out.size());
rep.send(curreq,out.c_str(),out.size());
+
+ }
+
+ void removeuser(libhttppp::HttpRequest *curreq, const int tid, ULONG_PTR args){
+ char uid[255];
+ sscanf(curreq->getRequestURL(),"/admin/removeuser/%s",uid);
+
+ User user;
+
+ uuid_t uuid;
+
+ uuid_parse(uid,uuid);
+
+ _Backend.lock();
+ user.remove(_Backend,uuid);
+ _Backend.unlock();
+
+ libhttppp::HttpResponse rep;
+ rep.setState(HTTP307);
+ rep.setVersion(HTTPVERSION(1.1));
+ rep.setHeaderData("Location")->push_back("/admin/listusers");
+ rep.setContentType("text/html");
+ rep.send(curreq,nullptr,0);
}
void getAvatar(libhttppp::HttpRequest *curreq, const int tid, ULONG_PTR args){
@@ -245,6 +268,8 @@ namespace authdb {
listUsers(curreq,tid,args);
}else if(strncmp(curreq->getRequestURL(),"/admin/createuser",17)==0){
createUser(curreq,tid,args);
+ }else if(strncmp(curreq->getRequestURL(),"/admin/removeuser",17)==0){
+ removeuser(curreq,tid,args);
}else if(strncmp(curreq->getRequestURL(),"/admin/getavatar/",17)==0){
getAvatar(curreq,tid,args);
}else{
@@ -355,6 +380,38 @@ VALUEFOUND:
return found;
}
+
+ void delRecord(AuthBackend &backend,const uuid_t uid){
+ size_t end=backend.end(),rd=sizeof(AuthHeader);
+
+ char cuid[255];
+
+ if(!uid)
+ throw AuthBackendError("user info uid required!");
+
+ uuid_unparse(uid,cuid);
+
+ while(rddatasize;
+ if(strlen(cur->uuid) >0 &&
+ strncmp(cuid,cur->uuid,strlen(cur->uuid)) == 0){
+ // std::cout << cur->uuid << std::endl;
+ size_t dsize=cur->datasize;
+ memset(cur,0,sizeof(AuthData));
+ cur->datasize=dsize;
+ backend.WriteAuthData(cur,wr);
+ const unsigned char zero=0;
+ for(size_t i=0; iData; curec; curec=curec->next()){
backend.WriteAuthData(curec->Data,wd);
+ backend.write((unsigned char*)curec->Data->data,curec->Data->datasize);
wd=backend.end();
}
}
-void authdb::User::edit(AuthBackend &backend, uuid_t *uid,class UserData& dat, size_t &pos){
+void authdb::User::edit(AuthBackend &backend, uuid_t uid,class UserData& dat, size_t &pos){
}
-void authdb::User::remove(AuthBackend &backend, uuid_t *uid){
+void authdb::User::remove(AuthBackend &backend,const uuid_t uid){
+ delRecord(backend,uid);
}
-void authdb::User::info(AuthBackend &backend, uuid_t *uid,class UserData& dat, size_t &pos){
+void authdb::User::info(AuthBackend &backend, uuid_t uid,class UserData& dat, size_t &pos){
size_t end=backend.end();
char cuid[255];
@@ -392,7 +394,7 @@ void authdb::User::info(AuthBackend &backend, uuid_t *uid,class UserData& dat, s
if(!uid)
throw AuthBackendError("user info uid required!");
- uuid_unparse(*uid,cuid);
+ uuid_unparse(uid,cuid);
while(pos