mirror of
				https://github.com/Telecominfraproject/wlan-cloud-ucentralsec.git
				synced 2025-11-04 04:37:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
//
 | 
						|
// Created by stephane bourque on 2021-06-21.
 | 
						|
//
 | 
						|
 | 
						|
#include "RESTAPI_users_handler.h"
 | 
						|
#include "RESTAPI/RESTAPI_db_helpers.h"
 | 
						|
#include "StorageService.h"
 | 
						|
 | 
						|
namespace OpenWifi {
 | 
						|
	void RESTAPI_users_handler::DoGet() {
 | 
						|
		bool IdOnly = (GetParameter("idOnly", "false") == "true");
 | 
						|
		auto nameSearch = GetParameter("nameSearch");
 | 
						|
		auto emailSearch = GetParameter("emailSearch");
 | 
						|
 | 
						|
		std::string baseQuery;
 | 
						|
		if (!nameSearch.empty() || !emailSearch.empty()) {
 | 
						|
			if (!nameSearch.empty())
 | 
						|
				baseQuery = fmt::format(" Lower(name) like('%{}%') ",
 | 
						|
										ORM::Escape(Poco::toLower(nameSearch)));
 | 
						|
			if (!emailSearch.empty())
 | 
						|
				baseQuery += baseQuery.empty()
 | 
						|
								 ? fmt::format(" Lower(email) like('%{}%') ",
 | 
						|
											   ORM::Escape(Poco::toLower(emailSearch)))
 | 
						|
								 : fmt::format(" and Lower(email) like('%{}%') ",
 | 
						|
											   ORM::Escape(Poco::toLower(emailSearch)));
 | 
						|
		}
 | 
						|
 | 
						|
		if (QB_.Select.empty()) {
 | 
						|
			SecurityObjects::UserInfoList Users;
 | 
						|
			if (StorageService()->UserDB().GetUsers(QB_.Offset, QB_.Limit, Users.users,
 | 
						|
													baseQuery)) {
 | 
						|
				for (auto &i : Users.users) {
 | 
						|
					Sanitize(UserInfo_, i);
 | 
						|
				}
 | 
						|
				if (IdOnly) {
 | 
						|
					Poco::JSON::Array Arr;
 | 
						|
					for (const auto &i : Users.users)
 | 
						|
						Arr.add(i.id);
 | 
						|
					Poco::JSON::Object Answer;
 | 
						|
					Answer.set("users", Arr);
 | 
						|
					return ReturnObject(Answer);
 | 
						|
				}
 | 
						|
			}
 | 
						|
			Poco::JSON::Object Answer;
 | 
						|
			Users.to_json(Answer);
 | 
						|
			return ReturnObject(Answer);
 | 
						|
		} else {
 | 
						|
			SecurityObjects::UserInfoList Users;
 | 
						|
			for (auto &i : SelectedRecords()) {
 | 
						|
				SecurityObjects::UserInfo UInfo;
 | 
						|
				if (StorageService()->UserDB().GetUserById(i, UInfo)) {
 | 
						|
					Poco::JSON::Object Obj;
 | 
						|
					Sanitize(UserInfo_, UInfo);
 | 
						|
					Users.users.emplace_back(UInfo);
 | 
						|
				}
 | 
						|
			}
 | 
						|
			Poco::JSON::Object Answer;
 | 
						|
			Users.to_json(Answer);
 | 
						|
			return ReturnObject(Answer);
 | 
						|
		}
 | 
						|
	}
 | 
						|
} // namespace OpenWifi
 |