|
|
@ -190,6 +190,47 @@ list<shared_ptr<User>> DBService::getAllUser() { |
|
|
|
} |
|
|
|
return users; |
|
|
|
} |
|
|
|
void DBService::addUser(string uid, string passwd, int permission_level) { |
|
|
|
auto usertable = make_storage(USER_DB_STRUCT); |
|
|
|
usertable.sync_schema(); |
|
|
|
logger->info("add user: {} {} {}", uid, passwd, permission_level); |
|
|
|
usertable.insert(User{-1, uid, passwd, permission_level, true}); |
|
|
|
} |
|
|
|
void DBService::delUser(int id) { |
|
|
|
auto usertable = make_storage(USER_DB_STRUCT); |
|
|
|
usertable.sync_schema(); |
|
|
|
/**
|
|
|
|
* @brief find admin user |
|
|
|
*/ |
|
|
|
auto admin = usertable.get_all<User>(where(c(&User::uid) == "admin")); |
|
|
|
ZCHECK(admin.size() == 1, "admin user not found"); |
|
|
|
if (admin[0].id == id) { |
|
|
|
logger->error("can not delete admin user"); |
|
|
|
return; |
|
|
|
} |
|
|
|
auto remove_user = usertable.get_all<User>(where(c(&User::id) == id)); |
|
|
|
if (remove_user.size() == 0) { |
|
|
|
logger->error("remove user fail, user not found"); |
|
|
|
return; |
|
|
|
} |
|
|
|
logger->info("delete user: {}:{}", id, remove_user[0].uid); |
|
|
|
usertable.remove<User>(where(c(&User::id) == id)); |
|
|
|
} |
|
|
|
|
|
|
|
void DBService::updateUserPermissionLevel(int id, int permission_level) { |
|
|
|
auto usertable = make_storage(USER_DB_STRUCT); |
|
|
|
usertable.sync_schema(); |
|
|
|
|
|
|
|
auto user = usertable.get_all<User>(where(c(&User::id) == id)); |
|
|
|
if (user.size() == 0) { |
|
|
|
logger->error("update user permission level fail, user not found"); |
|
|
|
return; |
|
|
|
} |
|
|
|
logger->info("update user permission level: {} {} -> {}", id, user[0].permission_level, permission_level); |
|
|
|
user[0].permission_level = permission_level; |
|
|
|
usertable.update(user[0]); |
|
|
|
} |
|
|
|
|
|
|
|
json DBService::getAllUserJson() { |
|
|
|
json j_users; |
|
|
|
auto usertable = make_storage(USER_DB_STRUCT); |
|
|
|