mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-03 03:40:49 +08:00
init project
This commit is contained in:
59
app/controllers/members_controller.rb
Normal file
59
app/controllers/members_controller.rb
Normal file
@@ -0,0 +1,59 @@
|
||||
class MembersController < ApplicationController
|
||||
before_action :require_login
|
||||
before_action :find_project_with_id
|
||||
before_action :find_user_with_id, only: %i[create remove change_role]
|
||||
before_action :operate!, except: %i[index]
|
||||
before_action :check_member_exists!, only: %i[create]
|
||||
before_action :check_member_not_exists!, only: %i[remove change_role]
|
||||
|
||||
def create
|
||||
interactor = Projects::AddMemberInteractor.call(current_user, @project, @user)
|
||||
render_response(interactor)
|
||||
rescue Exception => e
|
||||
uid_logger_error(e.message)
|
||||
tip_exception(e.message)
|
||||
end
|
||||
|
||||
def index
|
||||
scope = @project.members.includes(:roles, user: :user_extension)
|
||||
@total_count = scope.size
|
||||
@members = paginate(scope)
|
||||
end
|
||||
|
||||
def remove
|
||||
interactor = Projects::DeleteMemberInteractor.call(current_user, @project, @user)
|
||||
render_response(interactor)
|
||||
rescue Exception => e
|
||||
uid_logger_error(e.message)
|
||||
tip_exception(e.message)
|
||||
end
|
||||
|
||||
def change_role
|
||||
interactor = Projects::ChangeMemberRoleInteractor.call(current_user, @project, @user, params[:role])
|
||||
render_response(interactor)
|
||||
rescue Exception => e
|
||||
uid_logger_error(e.message)
|
||||
tip_exception(e.message)
|
||||
end
|
||||
|
||||
private
|
||||
def can_operate?
|
||||
current_user.project_manager?(@project)
|
||||
end
|
||||
|
||||
def member_exists?
|
||||
@project.member?(params[:user_id])
|
||||
end
|
||||
|
||||
def operate!
|
||||
return render_forbidden('你不是管理员,没有权限操作') unless can_operate?
|
||||
end
|
||||
|
||||
def check_member_exists!
|
||||
return render_result(1, "user_id为#{params[:user_id]}的用户已经是项目成员") if member_exists?
|
||||
end
|
||||
|
||||
def check_member_not_exists!
|
||||
return render_result(1, "user_id为#{params[:user_id]}的用户还不是项目成员") unless member_exists?
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user