Adding a banned endpoint for admins. Removing it from GetSite. Fixes #1806
This commit is contained in:
parent
b733df2903
commit
bd31475dba
8 changed files with 39 additions and 6 deletions
|
@ -48,6 +48,9 @@ pub async fn match_websocket_operation(
|
|||
do_websocket_operation::<ApproveRegistrationApplication>(context, id, op, data).await
|
||||
}
|
||||
UserOperation::BanPerson => do_websocket_operation::<BanPerson>(context, id, op, data).await,
|
||||
UserOperation::GetBannedPersons => {
|
||||
do_websocket_operation::<GetBannedPersons>(context, id, op, data).await
|
||||
}
|
||||
UserOperation::BlockPerson => {
|
||||
do_websocket_operation::<BlockPerson>(context, id, op, data).await
|
||||
}
|
||||
|
|
|
@ -528,6 +528,30 @@ impl Perform for BanPerson {
|
|||
}
|
||||
}
|
||||
|
||||
#[async_trait::async_trait(?Send)]
|
||||
impl Perform for GetBannedPersons {
|
||||
type Response = BannedPersonsResponse;
|
||||
|
||||
async fn perform(
|
||||
&self,
|
||||
context: &Data<LemmyContext>,
|
||||
_websocket_id: Option<ConnectionId>,
|
||||
) -> Result<Self::Response, LemmyError> {
|
||||
let data: &GetBannedPersons = self;
|
||||
let local_user_view =
|
||||
get_local_user_view_from_jwt(&data.auth, context.pool(), context.secret()).await?;
|
||||
|
||||
// Make sure user is an admin
|
||||
is_admin(&local_user_view)?;
|
||||
|
||||
let banned = blocking(context.pool(), PersonViewSafe::banned).await??;
|
||||
|
||||
let res = Self::Response { banned };
|
||||
|
||||
Ok(res)
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait::async_trait(?Send)]
|
||||
impl Perform for BlockPerson {
|
||||
type Response = BlockPersonResponse;
|
||||
|
|
|
@ -510,7 +510,6 @@ impl Perform for TransferSite {
|
|||
let creator_person = admins.remove(creator_index);
|
||||
admins.insert(0, creator_person);
|
||||
|
||||
let banned = blocking(context.pool(), PersonViewSafe::banned).await??;
|
||||
let federated_instances = build_federated_instances(
|
||||
context.pool(),
|
||||
&context.settings().federation,
|
||||
|
@ -521,7 +520,6 @@ impl Perform for TransferSite {
|
|||
Ok(GetSiteResponse {
|
||||
site_view: Some(site_view),
|
||||
admins,
|
||||
banned,
|
||||
online: 0,
|
||||
version: version::VERSION.to_string(),
|
||||
my_user: None,
|
||||
|
|
|
@ -145,6 +145,16 @@ pub struct BanPerson {
|
|||
pub auth: Sensitive<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct GetBannedPersons {
|
||||
pub auth: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct BannedPersonsResponse {
|
||||
pub banned: Vec<PersonViewSafe>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
pub struct BanPersonResponse {
|
||||
pub person_view: PersonViewSafe,
|
||||
|
|
|
@ -139,7 +139,6 @@ pub struct SiteResponse {
|
|||
pub struct GetSiteResponse {
|
||||
pub site_view: Option<SiteView>, // Because the site might not be set up yet
|
||||
pub admins: Vec<PersonViewSafe>,
|
||||
pub banned: Vec<PersonViewSafe>,
|
||||
pub online: usize,
|
||||
pub version: String,
|
||||
pub my_user: Option<MyUserInfo>,
|
||||
|
|
|
@ -92,8 +92,6 @@ impl PerformCrud for GetSite {
|
|||
}
|
||||
}
|
||||
|
||||
let banned = blocking(context.pool(), PersonViewSafe::banned).await??;
|
||||
|
||||
let online = context
|
||||
.chat_server()
|
||||
.send(GetUsersOnline)
|
||||
|
@ -160,7 +158,6 @@ impl PerformCrud for GetSite {
|
|||
Ok(GetSiteResponse {
|
||||
site_view,
|
||||
admins,
|
||||
banned,
|
||||
online,
|
||||
version: version::VERSION.to_string(),
|
||||
my_user,
|
||||
|
|
|
@ -130,6 +130,7 @@ pub enum UserOperation {
|
|||
ListRegistrationApplications,
|
||||
ApproveRegistrationApplication,
|
||||
BanPerson,
|
||||
GetBannedPersons,
|
||||
Search,
|
||||
ResolveObject,
|
||||
MarkAllAsRead,
|
||||
|
|
|
@ -181,6 +181,7 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimit) {
|
|||
.route("/join", web::post().to(route_post::<UserJoin>))
|
||||
// Admin action. I don't like that it's in /user
|
||||
.route("/ban", web::post().to(route_post::<BanPerson>))
|
||||
.route("/banned", web::get().to(route_get::<GetBannedPersons>))
|
||||
.route("/block", web::post().to(route_post::<BlockPerson>))
|
||||
// Account actions. I don't like that they're in /user maybe /accounts
|
||||
.route("/login", web::post().to(route_post::<Login>))
|
||||
|
|
Loading…
Reference in a new issue