Fix revocation of invites, allow for /user_id/teams to be useful

This commit is contained in:
Geometrically
2020-12-27 18:50:10 -07:00
parent 833cb99f41
commit 8c1688657a
4 changed files with 16 additions and 1 deletions

View File

@@ -235,6 +235,16 @@ impl Version {
.execute(exec) .execute(exec)
.await?; .await?;
sqlx::query!(
"
DELETE FROM downloads
WHERE downloads.version_id = $1
",
id as VersionId,
)
.execute(exec)
.await?;
use futures::TryStreamExt; use futures::TryStreamExt;
let files = sqlx::query!( let files = sqlx::query!(

View File

@@ -45,6 +45,8 @@ impl Default for Permissions {
/// A member of a team /// A member of a team
#[derive(Serialize, Deserialize, Clone)] #[derive(Serialize, Deserialize, Clone)]
pub struct TeamMember { pub struct TeamMember {
/// The ID of the team this team member is a member of
pub team_id: TeamId,
/// The ID of the user associated with the member /// The ID of the user associated with the member
pub user_id: UserId, pub user_id: UserId,
/// The role of the user in the team /// The role of the user in the team

View File

@@ -27,6 +27,7 @@ pub async fn team_members_get(
let team_members: Vec<crate::models::teams::TeamMember> = members_data let team_members: Vec<crate::models::teams::TeamMember> = members_data
.into_iter() .into_iter()
.map(|data| crate::models::teams::TeamMember { .map(|data| crate::models::teams::TeamMember {
team_id: id,
user_id: data.user_id.into(), user_id: data.user_id.into(),
role: data.role, role: data.role,
permissions: Some(data.permissions), permissions: Some(data.permissions),
@@ -44,6 +45,7 @@ pub async fn team_members_get(
if team_member.accepted { if team_member.accepted {
team_members.push( team_members.push(
crate::models::teams::TeamMember { crate::models::teams::TeamMember {
team_id: id,
user_id: team_member.user_id.into(), user_id: team_member.user_id.into(),
role: team_member.role, role: team_member.role,
permissions: None, permissions: None,
@@ -298,7 +300,7 @@ pub async fn remove_team_member(
} }
}; };
let delete_member = TeamMember::get_from_user_id(id, user_id, &**pool).await?; let delete_member = TeamMember::get_from_user_id_pending(id, user_id, &**pool).await?;
if let Some(delete_member) = delete_member { if let Some(delete_member) = delete_member {
if delete_member.role == crate::models::teams::OWNER_ROLE { if delete_member.role == crate::models::teams::OWNER_ROLE {

View File

@@ -175,6 +175,7 @@ pub async fn teams(
let team_members: Vec<crate::models::teams::TeamMember> = results let team_members: Vec<crate::models::teams::TeamMember> = results
.into_iter() .into_iter()
.map(|data| crate::models::teams::TeamMember { .map(|data| crate::models::teams::TeamMember {
team_id: data.team_id.into(),
user_id: data.user_id.into(), user_id: data.user_id.into(),
role: data.role, role: data.role,
permissions: if same_user { permissions: if same_user {