You've already forked AstralRinth
forked from didirus/AstralRinth
Fix org adding (#821)
This commit is contained in:
@@ -664,7 +664,6 @@ pub async fn organization_projects_add(
|
||||
)
|
||||
.await?
|
||||
.ok_or_else(|| ApiError::InvalidInput("You are not a member of this project!".to_string()))?;
|
||||
|
||||
let organization_team_member = database::models::TeamMember::get_from_user_id_organization(
|
||||
organization.id,
|
||||
current_user.id.into(),
|
||||
@@ -705,22 +704,7 @@ pub async fn organization_projects_add(
|
||||
// The former owner is no longer an owner (as it is now 'owned' by the organization, 'given' to them)
|
||||
// The former owner is still a member of the project, but not an owner
|
||||
// When later removed from the organization, the project will be owned by whoever is specified as the new owner there
|
||||
if !current_user.role.is_admin() {
|
||||
let team_member_id = project_team_member.id;
|
||||
sqlx::query!(
|
||||
"
|
||||
UPDATE team_members
|
||||
SET is_owner = FALSE
|
||||
WHERE id = $1
|
||||
",
|
||||
team_member_id as database::models::ids::TeamMemberId
|
||||
)
|
||||
.execute(&mut *transaction)
|
||||
.await?;
|
||||
}
|
||||
|
||||
// The owner of the organization, should be removed as a member of the project, if they are
|
||||
// (As it is an organization project now, and they should not have more specific permissions)
|
||||
let organization_owner_user_id = sqlx::query!(
|
||||
"
|
||||
SELECT u.id
|
||||
@@ -735,16 +719,20 @@ pub async fn organization_projects_add(
|
||||
let organization_owner_user_id =
|
||||
database::models::ids::UserId(organization_owner_user_id.id);
|
||||
|
||||
// If the owner of the organization is a member of the project, remove them
|
||||
database::models::TeamMember::delete(
|
||||
project_item.inner.team_id,
|
||||
organization_owner_user_id,
|
||||
&mut transaction,
|
||||
sqlx::query!(
|
||||
"
|
||||
DELETE FROM team_members
|
||||
WHERE team_id = $1 AND (is_owner = TRUE OR user_id = $2)
|
||||
",
|
||||
project_item.inner.team_id as database::models::ids::TeamId,
|
||||
organization_owner_user_id as database::models::ids::UserId,
|
||||
)
|
||||
.execute(&mut *transaction)
|
||||
.await?;
|
||||
|
||||
transaction.commit().await?;
|
||||
|
||||
database::models::User::clear_project_cache(&[current_user.id.into()], &redis).await?;
|
||||
database::models::TeamMember::clear_cache(project_item.inner.team_id, &redis).await?;
|
||||
database::models::Project::clear_cache(
|
||||
project_item.inner.id,
|
||||
@@ -905,7 +893,7 @@ pub async fn organization_projects_remove(
|
||||
.await?;
|
||||
|
||||
transaction.commit().await?;
|
||||
|
||||
database::models::User::clear_project_cache(&[current_user.id.into()], &redis).await?;
|
||||
database::models::TeamMember::clear_cache(project_item.inner.team_id, &redis).await?;
|
||||
database::models::Project::clear_cache(
|
||||
project_item.inner.id,
|
||||
|
||||
Reference in New Issue
Block a user