diff --git a/include/ircd/m/user/user.h b/include/ircd/m/user/user.h index 105e19c3b..dfe950ef0 100644 --- a/include/ircd/m/user/user.h +++ b/include/ircd/m/user/user.h @@ -18,6 +18,7 @@ namespace ircd::m bool my(const user &); bool exists(const id::user &); bool exists(const user &); + bool active(const user &); bool is_oper(const user &); user create(const id::user &, const json::members &args = {}); @@ -63,7 +64,6 @@ struct ircd::m::user bool is_password(const string_view &password) const; event::id::buf password(const string_view &password); - bool is_active() const; event::id::buf deactivate(); event::id::buf activate(); diff --git a/matrix/user.cc b/matrix/user.cc index 20d53fa5c..0e4cd38fa 100644 --- a/matrix/user.cc +++ b/matrix/user.cc @@ -25,6 +25,26 @@ ircd::m::is_oper(const user &user) return m::membership(control_room_id, user, "join"); } +bool +ircd::m::active(const user &user) +{ + const m::user::room user_room + { + user.user_id + }; + + const m::event::idx &event_idx + { + user_room.get(std::nothrow, "ircd.account", "active") + }; + + return m::query(std::nothrow, event_idx, "content", [] + (const json::object &content) + { + return content.get("value", false); + }); +} + bool ircd::m::exists(const user &user) { @@ -157,27 +177,6 @@ ircd::m::user::deactivate() }); } -bool -ircd::m::user::is_active() -const -{ - const m::user::room user_room - { - user_id - }; - - const m::event::idx &event_idx - { - user_room.get(std::nothrow, "ircd.account", "active") - }; - - return m::query(std::nothrow, event_idx, "content", [] - (const json::object &content) - { - return content.get("value", false); - }); -} - ircd::m::event::id::buf ircd::m::user::password(const string_view &password) { diff --git a/modules/client/login.cc b/modules/client/login.cc index 96abe54e0..6e27e367e 100644 --- a/modules/client/login.cc +++ b/modules/client/login.cc @@ -96,7 +96,7 @@ post__login_password(client &client, "Access denied." }; - if(!user.is_active()) + if(!active(user)) throw m::FORBIDDEN { "Access denied." diff --git a/modules/console.cc b/modules/console.cc index 2cd067388..790d79d36 100644 --- a/modules/console.cc +++ b/modules/console.cc @@ -11173,7 +11173,7 @@ console_cmd__user__active(opt &out, const string_view &line) }; out << user.user_id << " is " - << (user.is_active()? "active" : "inactive") + << (active(user)? "active" : "inactive") << std::endl; return true; @@ -11195,7 +11195,7 @@ console_cmd__user__activate(opt &out, const string_view &line) param.at(0) }; - if(user.is_active()) + if(active(user)) { out << user.user_id << " is already active" << std::endl; return true; @@ -11226,7 +11226,7 @@ console_cmd__user__deactivate(opt &out, const string_view &line) param.at(0) }; - if(!user.is_active()) + if(!active(user)) { out << user.user_id << " is already inactive" << std::endl; return true;