mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-03-06 12:43:06 +08:00
Fix project user assignment [SCI_5925] (#3577)
This commit is contained in:
parent
c85f5187f3
commit
6fbb22922a
2 changed files with 7 additions and 15 deletions
|
@ -22,7 +22,7 @@ class MyModuleMember
|
||||||
end
|
end
|
||||||
|
|
||||||
def update(params)
|
def update(params)
|
||||||
prepare_data(params)
|
user_assignment(params)
|
||||||
|
|
||||||
ActiveRecord::Base.transaction do
|
ActiveRecord::Base.transaction do
|
||||||
user_assignment.update!(user_role: user_role, assigned: :manually)
|
user_assignment.update!(user_role: user_role, assigned: :manually)
|
||||||
|
@ -32,7 +32,7 @@ class MyModuleMember
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def prepare_data(params)
|
def user_assignment(params)
|
||||||
self.user_role_id = params[:user_role_id]
|
self.user_role_id = params[:user_role_id]
|
||||||
self.user_id = params[:user_id]
|
self.user_id = params[:user_id]
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,7 @@ class ProjectMember
|
||||||
validates :user, :project, presence: true, if: -> { assign }
|
validates :user, :project, presence: true, if: -> { assign }
|
||||||
validates :user_role_id, presence: true, if: -> { assign }
|
validates :user_role_id, presence: true, if: -> { assign }
|
||||||
validate :validate_role_presence, if: -> { assign }
|
validate :validate_role_presence, if: -> { assign }
|
||||||
validate :validate_user_project_relation_presence, if: -> { assign }
|
validate :validate_user_assignment_presence, if: -> { assign }
|
||||||
validate :validate_user_project_assignment_presence, if: -> { assign }
|
|
||||||
|
|
||||||
def initialize(user, project, current_user = nil)
|
def initialize(user, project, current_user = nil)
|
||||||
@user = user
|
@user = user
|
||||||
|
@ -25,7 +24,6 @@ class ProjectMember
|
||||||
return unless assign
|
return unless assign
|
||||||
|
|
||||||
ActiveRecord::Base.transaction do
|
ActiveRecord::Base.transaction do
|
||||||
@user_project = UserProject.create!(project: @project, user: @user)
|
|
||||||
user_role = set_user_role
|
user_role = set_user_role
|
||||||
|
|
||||||
@user_assignment = UserAssignment.create!(
|
@user_assignment = UserAssignment.create!(
|
||||||
|
@ -67,12 +65,12 @@ class ProjectMember
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
user_assignment = UserAssignment.find_by!(assignable: @project, user: @user)
|
user_assignment = UserAssignment.find_by!(assignable: @project, user: @user)
|
||||||
user_project = UserProject.find_by!(project: @project, user: @user)
|
user_project = UserProject.find_by(project: @project, user: @user)
|
||||||
return false if last_project_owner?
|
return false if last_project_owner?
|
||||||
|
|
||||||
ActiveRecord::Base.transaction do
|
ActiveRecord::Base.transaction do
|
||||||
user_assignment.destroy!
|
user_assignment.destroy!
|
||||||
user_project.destroy!
|
user_project&.destroy!
|
||||||
log_activity(:unassign_user_from_project)
|
log_activity(:unassign_user_from_project)
|
||||||
|
|
||||||
UserAssignments::PropagateAssignmentJob.perform_later(
|
UserAssignments::PropagateAssignmentJob.perform_later(
|
||||||
|
@ -115,14 +113,8 @@ class ProjectMember
|
||||||
errors.add(:user_role_id, :not_found) if UserRole.find_by(id: user_role_id).nil?
|
errors.add(:user_role_id, :not_found) if UserRole.find_by(id: user_role_id).nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_user_project_relation_presence
|
def validate_user_assignment_presence
|
||||||
return if UserProject.find_by(project: @project, user: @user).nil?
|
return if UserAssignment.find_by(assignable: @project, user: @user).nil?
|
||||||
|
|
||||||
errors.add(:user)
|
|
||||||
end
|
|
||||||
|
|
||||||
def validate_user_project_assignment_presence
|
|
||||||
return if UserAssignment.find_by(assignable: @project, user: @user).nil?
|
|
||||||
|
|
||||||
errors.add(:user_role_id, :already_present)
|
errors.add(:user_role_id, :already_present)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue