WebService: Verify username and token (#2930)
* WebService: Verify username and token; Log errors in PostJson * Fixup: added docstrings to the functions * Webservice: Added Icons to the verification, imrpved error detection in cpr, fixup nits * fixup: fmt warningmaster
parent
255fd8768d
commit
28c726f205
Binary file not shown.
After Width: | Height: | Size: 451 B |
Binary file not shown.
After Width: | Height: | Size: 428 B |
@ -0,0 +1,6 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource prefix="icons">
|
||||||
|
<file>checked.png</file>
|
||||||
|
<file>failed.png</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
@ -0,0 +1,28 @@
|
|||||||
|
// Copyright 2017 Citra Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include <json.hpp>
|
||||||
|
#include "web_service/verify_login.h"
|
||||||
|
#include "web_service/web_backend.h"
|
||||||
|
|
||||||
|
namespace WebService {
|
||||||
|
|
||||||
|
std::future<bool> VerifyLogin(std::string& username, std::string& token,
|
||||||
|
const std::string& endpoint_url, std::function<void()> func) {
|
||||||
|
auto get_func = [func, username](const std::string& reply) -> bool {
|
||||||
|
func();
|
||||||
|
if (reply.empty())
|
||||||
|
return false;
|
||||||
|
nlohmann::json json = nlohmann::json::parse(reply);
|
||||||
|
std::string result;
|
||||||
|
try {
|
||||||
|
result = json["username"];
|
||||||
|
} catch (const nlohmann::detail::out_of_range&) {
|
||||||
|
}
|
||||||
|
return result == username;
|
||||||
|
};
|
||||||
|
return GetJson<bool>(get_func, endpoint_url, false, username, token);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace WebService
|
@ -0,0 +1,24 @@
|
|||||||
|
// Copyright 2017 Citra Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
|
#include <future>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace WebService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if username and token is valid
|
||||||
|
* @param username Citra username to use for authentication.
|
||||||
|
* @param token Citra token to use for authentication.
|
||||||
|
* @param endpoint_url URL of the services.citra-emu.org endpoint.
|
||||||
|
* @param func A function that gets exectued when the verification is finished
|
||||||
|
* @returns Future with bool indicating whether the verification succeeded
|
||||||
|
*/
|
||||||
|
std::future<bool> VerifyLogin(std::string& username, std::string& token,
|
||||||
|
const std::string& endpoint_url, std::function<void()> func);
|
||||||
|
|
||||||
|
} // namespace WebService
|
Loading…
Reference in New Issue