forgeplus/app/controllers/api/v1/base_controller.rb

55 lines
1.9 KiB
Ruby
Raw Permalink Normal View History

class Api::V1::BaseController < ApplicationController
2022-06-22 19:08:14 +08:00
include Api::ProjectHelper
include Api::UserHelper
2022-07-25 16:21:03 +08:00
include Api::PullHelper
2022-06-22 19:08:14 +08:00
2022-07-11 18:50:13 +08:00
# before_action :doorkeeper_authorize!
# skip_before_action :user_setup
protected
2022-07-11 18:50:13 +08:00
# def current_user
# #client方法对接需要一直带着用户标识uid
# Rails.logger.info doorkeeper_token
# if doorkeeper_token && doorkeeper_token.resource_owner_id.blank?
# # return User.anonymous if params[:uid].nil?
# # tip_exception("2222")
# # return render_error('缺少用户标识!') if params[:uid].nil?
# User.current = User.find(params[:uid])
# else
# User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
# end
# end
def limit
params.fetch(:limit, 15)
end
def page
params.fetch(:page, 1)
end
2022-07-15 14:02:48 +08:00
# 具有对仓库的管理权限
def require_manager_above
@project = load_project
2022-07-25 17:28:38 +08:00
return render_forbidden if !current_user.admin? && !@project.manager?(current_user)
end
2022-07-15 14:02:48 +08:00
# 具有对仓库的操作权限
def require_operate_above
@project = load_project
2022-07-25 17:28:38 +08:00
return render_forbidden if !current_user.admin? && !@project.operator?(current_user)
2022-07-15 14:02:48 +08:00
end
# 具有仓库的操作权限或者fork仓库的操作权限
def require_operate_above_or_fork_project
@project = load_project
puts !current_user.admin? && !@project.operator?(current_user) && !(@project.fork_project.present? && @project.fork_project.operator?(current_user))
return render_forbidden if !current_user.admin? && !@project.operator?(current_user) && !(@project.fork_project.present? && @project.fork_project.operator?(current_user))
end
2022-07-15 14:02:48 +08:00
# 具有对仓库的访问权限
def require_public_and_member_above
@project = load_project
2022-07-25 17:28:38 +08:00
return render_forbidden if !@project.is_public && !current_user.admin? && !@project.member?(current_user)
2022-07-15 14:02:48 +08:00
end
end