fix: update Reference type to be lifetime parameterized in admin API functions
This commit is contained in:
@@ -134,7 +134,7 @@ impl<'a> JsonSchema for Reference<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "rocket-impl")]
|
#[cfg(feature = "rocket-impl")]
|
||||||
impl<'r> FromFormField<'r> for Reference {
|
impl<'r> FromFormField<'r> for Reference<'r> {
|
||||||
fn from_value(field: rocket::form::ValueField<'r>) -> rocket::form::Result<'r, Self> {
|
fn from_value(field: rocket::form::ValueField<'r>) -> rocket::form::Result<'r, Self> {
|
||||||
Ok(Reference::from_unchecked(field.value.into()))
|
Ok(Reference::from_unchecked(field.value.into()))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -157,9 +157,4 @@ auto_derived!(
|
|||||||
pub user: crate::v0::User,
|
pub user: crate::v0::User,
|
||||||
pub member: Member,
|
pub member: Member,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct MemberWithUserResponse {
|
|
||||||
pub user: crate::v0::User,
|
|
||||||
pub member: Member,
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_comment_edit(
|
pub async fn admin_comment_edit(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
body: Json<v0::AdminCommentEdit>,
|
body: Json<v0::AdminCommentEdit>,
|
||||||
) -> Result<EmptyResponse> {
|
) -> Result<EmptyResponse> {
|
||||||
let user = flatten_authorized_user(&auth);
|
let user = flatten_authorized_user(&auth);
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_comment_fetch_case(
|
pub async fn admin_comment_fetch_case(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
) -> Result<Json<Vec<v0::AdminComment>>> {
|
) -> Result<Json<Vec<v0::AdminComment>>> {
|
||||||
let user = flatten_authorized_user(&auth);
|
let user = flatten_authorized_user(&auth);
|
||||||
if !user_has_permission(user, v0::AdminUserPermissionFlags::Comments) {
|
if !user_has_permission(user, v0::AdminUserPermissionFlags::Comments) {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_comment_fetch_object(
|
pub async fn admin_comment_fetch_object(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
) -> Result<Json<Vec<v0::AdminComment>>> {
|
) -> Result<Json<Vec<v0::AdminComment>>> {
|
||||||
let user = flatten_authorized_user(&auth);
|
let user = flatten_authorized_user(&auth);
|
||||||
if !user_has_permission(user, v0::AdminUserPermissionFlags::Comments) {
|
if !user_has_permission(user, v0::AdminUserPermissionFlags::Comments) {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ use crate::routes::admin::util::{flatten_authorized_user, user_has_permission};
|
|||||||
pub async fn admin_edit_user(
|
pub async fn admin_edit_user(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
target: Reference,
|
target: Reference<'_>,
|
||||||
body: Json<v0::AdminUserEdit>,
|
body: Json<v0::AdminUserEdit>,
|
||||||
) -> Result<EmptyResponse> {
|
) -> Result<EmptyResponse> {
|
||||||
let user = flatten_authorized_user(&auth);
|
let user = flatten_authorized_user(&auth);
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ use crate::routes::admin::util::user_has_permission;
|
|||||||
pub async fn admin_revoke_token(
|
pub async fn admin_revoke_token(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminMachineToken,
|
auth: AdminMachineToken,
|
||||||
token: Reference,
|
token: Reference<'_>,
|
||||||
) -> Result<EmptyResponse> {
|
) -> Result<EmptyResponse> {
|
||||||
if !user_has_permission(
|
if !user_has_permission(
|
||||||
&auth.on_behalf_of,
|
&auth.on_behalf_of,
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_server_add_member(
|
pub async fn admin_server_add_member(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
case: Option<&str>,
|
case: Option<&str>,
|
||||||
user_id: Reference,
|
user_id: Reference<'_>,
|
||||||
suppress_alerts: bool,
|
suppress_alerts: bool,
|
||||||
) -> Result<Json<v0::MemberWithUserResponse>> {
|
) -> Result<Json<v0::MemberWithUserResponse>> {
|
||||||
let user = flatten_authorized_user(&auth);
|
let user = flatten_authorized_user(&auth);
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_server_ban_member(
|
pub async fn admin_server_ban_member(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
case: Option<&str>,
|
case: Option<&str>,
|
||||||
user_id: Reference,
|
user_id: Reference<'_>,
|
||||||
suppress_alerts: bool,
|
suppress_alerts: bool,
|
||||||
body: Json<v0::DataBanCreate>,
|
body: Json<v0::DataBanCreate>,
|
||||||
) -> Result<Json<v0::ServerBan>> {
|
) -> Result<Json<v0::ServerBan>> {
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_server_change_owner(
|
pub async fn admin_server_change_owner(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
case: Option<&str>,
|
case: Option<&str>,
|
||||||
user_id: Reference,
|
user_id: Reference<'_>,
|
||||||
) -> Result<EmptyResponse> {
|
) -> Result<EmptyResponse> {
|
||||||
let user = flatten_authorized_user(&auth);
|
let user = flatten_authorized_user(&auth);
|
||||||
if !user_has_permission(user, v0::AdminUserPermissionFlags::ManageServers) {
|
if !user_has_permission(user, v0::AdminUserPermissionFlags::ManageServers) {
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_server_create_invite(
|
pub async fn admin_server_create_invite(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
channel_id: Reference,
|
channel_id: Reference<'_>,
|
||||||
case: Option<&str>,
|
case: Option<&str>,
|
||||||
slug: Option<&str>,
|
slug: Option<&str>,
|
||||||
) -> Result<Json<v0::Invite>> {
|
) -> Result<Json<v0::Invite>> {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_server_delete(
|
pub async fn admin_server_delete(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
case: Option<&str>,
|
case: Option<&str>,
|
||||||
) -> Result<EmptyResponse> {
|
) -> Result<EmptyResponse> {
|
||||||
let user = flatten_authorized_user(&auth);
|
let user = flatten_authorized_user(&auth);
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_server_delete_invites(
|
pub async fn admin_server_delete_invites(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
case: Option<&str>,
|
case: Option<&str>,
|
||||||
slug: Option<Reference>,
|
slug: Option<Reference<'_>>,
|
||||||
) -> Result<EmptyResponse> {
|
) -> Result<EmptyResponse> {
|
||||||
let user = flatten_authorized_user(&auth);
|
let user = flatten_authorized_user(&auth);
|
||||||
if !user_has_permission(user, v0::AdminUserPermissionFlags::ManageServers) {
|
if !user_has_permission(user, v0::AdminUserPermissionFlags::ManageServers) {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_server_edit(
|
pub async fn admin_server_edit(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
case: Option<&str>,
|
case: Option<&str>,
|
||||||
body: Json<v0::DataEditServer>,
|
body: Json<v0::DataEditServer>,
|
||||||
) -> Result<Json<v0::Server>> {
|
) -> Result<Json<v0::Server>> {
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_server_remove_members(
|
pub async fn admin_server_remove_members(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
case: Option<&str>,
|
case: Option<&str>,
|
||||||
user_id: Vec<Reference>,
|
user_id: Vec<Reference<'_>>,
|
||||||
suppress_alerts: bool,
|
suppress_alerts: bool,
|
||||||
) -> Result<EmptyResponse> {
|
) -> Result<EmptyResponse> {
|
||||||
let admin_user = flatten_authorized_user(&auth);
|
let admin_user = flatten_authorized_user(&auth);
|
||||||
|
|||||||
@@ -18,9 +18,9 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_server_unban_member(
|
pub async fn admin_server_unban_member(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
case: Option<&str>,
|
case: Option<&str>,
|
||||||
user_id: Reference,
|
user_id: Reference<'_>,
|
||||||
suppress_alerts: bool,
|
suppress_alerts: bool,
|
||||||
body: Json<v0::DataBanCreate>,
|
body: Json<v0::DataBanCreate>,
|
||||||
) -> Result<EmptyResponse> {
|
) -> Result<EmptyResponse> {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_server_get(
|
pub async fn admin_server_get(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
case: Option<&str>,
|
case: Option<&str>,
|
||||||
) -> Result<Json<v0::AdminServerResponse>> {
|
) -> Result<Json<v0::AdminServerResponse>> {
|
||||||
let user = flatten_authorized_user(&auth);
|
let user = flatten_authorized_user(&auth);
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_server_get_members(
|
pub async fn admin_server_get_members(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
case: Option<&str>,
|
case: Option<&str>,
|
||||||
after: Option<usize>,
|
after: Option<usize>,
|
||||||
) -> Result<Json<v0::AdminMemberWithUserAndOffsetResponse>> {
|
) -> Result<Json<v0::AdminMemberWithUserAndOffsetResponse>> {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ use crate::routes::admin::util::{
|
|||||||
pub async fn admin_server_get_participants(
|
pub async fn admin_server_get_participants(
|
||||||
db: &State<Database>,
|
db: &State<Database>,
|
||||||
auth: AdminAuthorization,
|
auth: AdminAuthorization,
|
||||||
id: Reference,
|
id: Reference<'_>,
|
||||||
case: Option<&str>,
|
case: Option<&str>,
|
||||||
) -> Result<Json<Vec<(v0::User, Option<v0::Member>)>>> {
|
) -> Result<Json<Vec<(v0::User, Option<v0::Member>)>>> {
|
||||||
let user = flatten_authorized_user(&auth);
|
let user = flatten_authorized_user(&auth);
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ mod test {
|
|||||||
.await
|
.await
|
||||||
.expect("Failed to create test server");
|
.expect("Failed to create test server");
|
||||||
|
|
||||||
let (member, channels) = Member::create(&harness.db, &server, &user, Some(channels))
|
let (member, channels) = Member::create(&harness.db, &server, &user, Some(channels), false)
|
||||||
.await
|
.await
|
||||||
.expect("Failed to create member");
|
.expect("Failed to create member");
|
||||||
let channel = &channels[0];
|
let channel = &channels[0];
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ mod test {
|
|||||||
.await
|
.await
|
||||||
.expect("Failed to update the channel permissions for special role");
|
.expect("Failed to update the channel permissions for special role");
|
||||||
|
|
||||||
Member::create(&harness.db, &server, &user, Some(channels.clone()))
|
Member::create(&harness.db, &server, &user, Some(channels.clone()), false)
|
||||||
.await
|
.await
|
||||||
.expect("Failed to create member");
|
.expect("Failed to create member");
|
||||||
let member = Reference::from_unchecked(&user.id)
|
let member = Reference::from_unchecked(&user.id)
|
||||||
@@ -278,9 +278,15 @@ mod test {
|
|||||||
"Mention failed to be scrubbed when the user is not part of the server"
|
"Mention failed to be scrubbed when the user is not part of the server"
|
||||||
);
|
);
|
||||||
|
|
||||||
Member::create(&harness.db, &server, &second_user, Some(channels.clone()))
|
Member::create(
|
||||||
.await
|
&harness.db,
|
||||||
.expect("Failed to create second member");
|
&server,
|
||||||
|
&second_user,
|
||||||
|
Some(channels.clone()),
|
||||||
|
false,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.expect("Failed to create second member");
|
||||||
let mut second_member = Reference::from_unchecked(&second_user.id)
|
let mut second_member = Reference::from_unchecked(&second_user.id)
|
||||||
.as_member(&harness.db, &server.id)
|
.as_member(&harness.db, &server.id)
|
||||||
.await
|
.await
|
||||||
@@ -544,7 +550,7 @@ mod test {
|
|||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
let (mut other_member, _) = Member::create(&harness.db, &server, &other_user, None)
|
let (mut other_member, _) = Member::create(&harness.db, &server, &other_user, None, false)
|
||||||
.await
|
.await
|
||||||
.expect("Failed to add test member");
|
.expect("Failed to add test member");
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ mod test {
|
|||||||
|
|
||||||
let channel = &channels[0];
|
let channel = &channels[0];
|
||||||
|
|
||||||
Member::create(&harness.db, &server, &user, Some(channels.clone()))
|
Member::create(&harness.db, &server, &user, Some(channels.clone()), false)
|
||||||
.await
|
.await
|
||||||
.expect("Failed to create member");
|
.expect("Failed to create member");
|
||||||
let member = Reference::from_unchecked(&user.id)
|
let member = Reference::from_unchecked(&user.id)
|
||||||
|
|||||||
Reference in New Issue
Block a user