29 #include "core/auth/UserGroupMembership_odb.h" 30 #include "core/auth/User_odb.h" 55 odb::transaction t(db->begin());
57 auto attributes = req.at(
"attributes");
58 auto gid = attributes.at(
"group_id").get<
size_t>();
59 auto uid = attributes.at(
"user_id").get<
size_t>();
69 if (group->member_has(user->id()))
72 <<
" is already in group " 76 auto membership = group->member_add(user, rank);
90 odb::transaction t(db->begin());
108 odb::transaction t(
ctx_.
dbsrv->db()->begin());
114 ctx_.
dbsrv->db(), membership->group().load(), membership->user().load(),
123 std::vector<CRUDResourceHandler::ActionActionParam>
125 const json &req)
const 127 using namespace JSONUtil;
129 std::vector<CRUDResourceHandler::ActionActionParam> ret;
std::chrono::system_clock::time_point extract_with_default(const nlohmann::json &obj, const std::string &key, const std::chrono::system_clock::time_point &tp)
Extract an ISO 8601 datetime string from a json object.
virtual boost::optional< json > read_impl(const json &req) override
Retrieve information about a group.
static IUserGroupMembershipEventPtr UserGroupMembershipEvent(const DBPtr &database, Auth::GroupPtr target_group, Auth::UserPtr target_user, IAuditEntryPtr parent)
Someone joined the group.
virtual std::vector< ActionActionParam > required_permission(Verb verb, const json &req) const override
virtual boost::optional< json > delete_impl(const json &req) override
This is the header file for a generated source file, GitSHA1.cpp.
unsigned long UserGroupMembershipId
virtual boost::optional< json > create_impl(const json &req) override
Creating a new UserGroupMembersip: this means someone is joining a group.
static CRUDResourceHandlerUPtr instanciate(RequestContext)
virtual UserSecurityContext & security_context() const override
Helper function that returns the security context.
Audit::IAuditEntryPtr audit
The initial audit trail for the request.
std::unique_ptr< CRUDResourceHandler > CRUDResourceHandlerUPtr
static json serialize(const Auth::UserGroupMembership &ugm, const SecurityContext &sc)
MembershipCRUD(RequestContext ctx)
GroupRank
The rank of an User inside a Group.
All modules that provides features to Leosac shall be in this namespace.
std::shared_ptr< UserGroupMembership > UserGroupMembershipPtr
Base CRUD handler for use within the websocket module.
#define BUILD_STR(param)
Internal macro.
A base class for Leosac specific exception.
virtual boost::optional< json > update_impl(const json &req) override
Auth::UserGroupMembershipId membership_id
Holds valuable pointer to provide context to a request.
std::shared_ptr< odb::database > DBPtr