Allow everyone to see build action details

This commit is contained in:
Martchus 2022-03-10 23:19:02 +01:00
parent 30e3d0343e
commit ac0d64fe3e
4 changed files with 12 additions and 8 deletions

View File

@ -26,6 +26,8 @@ template <> inline void convertValue(const std::multimap<std::string, std::strin
if (part.empty()) {
} else if (part == "read_build_actions_details") {
result = result | UserPermissions::ReadBuildActionsDetails;
} else if (part == "download_artefacts") {
result = result | UserPermissions::DownloadArtefacts;
} else if (part == "modify_build_actions") {
result = result | UserPermissions::ModifyBuildActions;
} else if (part == "perform_admin_actions") {

View File

@ -7,17 +7,19 @@
namespace LibRepoMgr {
enum class UserPermissions : std::uint64_t {
None = 0x0,
ReadBuildActionsDetails = 0x1,
ModifyBuildActions = ReadBuildActionsDetails | 0x2,
PerformAdminActions = 0x4,
TryAgain = 0x8,
None = 0,
ReadBuildActionsDetails = (1 << 0),
DownloadArtefacts = (1 << 1),
ModifyBuildActions = ReadBuildActionsDetails | DownloadArtefacts | (1 << 2),
PerformAdminActions = (1 << 3),
TryAgain = (1 << 4),
DefaultPermissions = ReadBuildActionsDetails,
};
constexpr UserPermissions operator|(UserPermissions lhs, UserPermissions rhs)
{
return static_cast<UserPermissions>(static_cast<int>(lhs) | static_cast<int>(rhs));
return static_cast<UserPermissions>(
static_cast<std::underlying_type_t<UserPermissions>>(lhs) | static_cast<std::underlying_type_t<UserPermissions>>(rhs));
}
struct UserInfo {

View File

@ -34,7 +34,7 @@ const Router Server::s_router = {
{ { http::verb::delete_, "/api/v0/build-action" }, Route{&Routes::deleteBuildActions, UserPermissions::ModifyBuildActions} },
{ { http::verb::get, "/api/v0/build-action/details" }, Route{&Routes::getBuildActionDetails, UserPermissions::ReadBuildActionsDetails} },
{ { http::verb::get, "/api/v0/build-action/logfile" }, Route{&Routes::getBuildActionLogFile, UserPermissions::ReadBuildActionsDetails} },
{ { http::verb::get, "/api/v0/build-action/artefact" }, Route{&Routes::getBuildActionArtefact, UserPermissions::ReadBuildActionsDetails} },
{ { http::verb::get, "/api/v0/build-action/artefact" }, Route{&Routes::getBuildActionArtefact, UserPermissions::DownloadArtefacts} },
{ { http::verb::post, "/api/v0/build-action" }, Route{&Routes::postBuildAction, UserPermissions::ModifyBuildActions} },
{ { http::verb::post, "/api/v0/build-action/clone" }, Route{&Routes::postCloneBuildActions, UserPermissions::ModifyBuildActions} },
{ { http::verb::post, "/api/v0/build-action/start" }, Route{&Routes::postStartBuildActions, UserPermissions::ModifyBuildActions} },

View File

@ -68,7 +68,7 @@ void Session::received(boost::system::error_code ec, size_t bytesTransferred)
if (const auto routing(router.find(RouteId{ method, std::string(path) })); routing != router.cend()) {
const Route &route = routing->second;
const auto requiredPermissions = route.permissions;
if (requiredPermissions != UserPermissions::None) {
if (requiredPermissions != UserPermissions::None && requiredPermissions != UserPermissions::DefaultPermissions) {
const auto authInfo = request.find(boost::beast::http::field::authorization);
if (authInfo == request.end()) {
respond(Render::makeAuthRequired(request));