FIX 版本库更新、创建、删除文件的权限问题

This commit is contained in:
Jasder 2020-08-13 11:06:34 +08:00
parent 3becb4eabc
commit 72ba784e70
7 changed files with 42 additions and 37 deletions

View File

@ -66,7 +66,7 @@ class RepositoriesController < ApplicationController
end end
def create_file def create_file
interactor = Gitea::CreateFileInteractor.call(current_user, content_params) interactor = Gitea::CreateFileInteractor.call(current_user.gitea_token, @project.owner.login, content_params)
if interactor.success? if interactor.success?
@file = interactor.result @file = interactor.result
create_new_pr(params) create_new_pr(params)
@ -76,7 +76,7 @@ class RepositoriesController < ApplicationController
end end
def update_file def update_file
interactor = Gitea::UpdateFileInteractor.call(current_user, params.merge(identifier: @project.identifier)) interactor = Gitea::UpdateFileInteractor.call(current_user.gitea_token, @project.owner.login, params.merge(identifier: @project.identifier))
if interactor.success? if interactor.success?
@file = interactor.result @file = interactor.result
create_new_pr(params) create_new_pr(params)
@ -87,7 +87,7 @@ class RepositoriesController < ApplicationController
end end
def delete_file def delete_file
interactor = Gitea::DeleteFileInteractor.call(current_user, params.merge(identifier: @project.identifier)) interactor = Gitea::DeleteFileInteractor.call(current_user.gitea_token, @project.owner.login, params.merge(identifier: @project.identifier))
if interactor.success? if interactor.success?
@file = interactor.result @file = interactor.result
render_result(1, "文件删除成功") render_result(1, "文件删除成功")

View File

@ -1,15 +1,15 @@
module Gitea module Gitea
class CreateFileInteractor class CreateFileInteractor
def self.call(user, params={}) def self.call(token, owner, params={})
interactor = new(user, params) interactor = new(token, owner, params)
interactor.run interactor.run
interactor interactor
end end
attr_reader :error, :result attr_reader :error, :result
def initialize(user, params) def initialize(token, owner, params)
@user = user @owner = owner
@params = params @params = params
end end
@ -23,7 +23,7 @@ module Gitea
def run def run
Contents::CreateForm.new(valid_params).validate! Contents::CreateForm.new(valid_params).validate!
response = Gitea::Repository::Entries::CreateService.new(user, @params[:identifier], @params[:filepath], file_params).call response = Gitea::Repository::Entries::CreateService.new(token, owner, @params[:identifier], @params[:filepath], file_params).call
render_result(response) render_result(response)
rescue Exception => exception rescue Exception => exception
Rails.logger.info "Exception ===========> #{exception.message}" Rails.logger.info "Exception ===========> #{exception.message}"
@ -33,7 +33,7 @@ module Gitea
private private
attr_reader :params, :user attr_reader :params, :owner, :token
def fail!(error) def fail!(error)
@error = error @error = error

View File

@ -1,15 +1,16 @@
module Gitea module Gitea
class DeleteFileInteractor class DeleteFileInteractor
def self.call(user, params={}) def self.call(token, owner, params={})
interactor = new(user, params) interactor = new(token, owner, params)
interactor.run interactor.run
interactor interactor
end end
attr_reader :error, :result attr_reader :error, :result
def initialize(user, params) def initialize(token, owner, params)
@user = user @token = token
@owner = owner
@params = params @params = params
end end
@ -23,7 +24,7 @@ module Gitea
def run def run
Contents::DeleteForm.new(valid_params).validate! Contents::DeleteForm.new(valid_params).validate!
response = Gitea::Repository::Entries::DeleteService.new(user, @params[:identifier], @params[:filepath], file_params).call response = Gitea::Repository::Entries::DeleteService.new(token, owner, @params[:identifier], @params[:filepath], file_params).call
render_result(response) render_result(response)
rescue Exception => exception rescue Exception => exception
fail!(exception.message) fail!(exception.message)
@ -31,7 +32,7 @@ module Gitea
private private
attr_reader :params, :user attr_reader :params, :owner, :token
def fail!(error) def fail!(error)
puts "[exception]: error" puts "[exception]: error"

View File

@ -1,15 +1,16 @@
module Gitea module Gitea
class UpdateFileInteractor class UpdateFileInteractor
def self.call(user, params={}) def self.call(token, owner, params={})
interactor = new(user, params) interactor = new(token, owner, params)
interactor.run interactor.run
interactor interactor
end end
attr_reader :error, :result attr_reader :error, :result
def initialize(user, params) def initialize(token, owner, params)
@user = user @owner = owner
@token = token
@params = params @params = params
end end
@ -23,7 +24,7 @@ module Gitea
def run def run
Contents::UpdateForm.new(valid_params).validate! Contents::UpdateForm.new(valid_params).validate!
response = Gitea::Repository::Entries::UpdateService.new(user, @params[:identifier], @params[:filepath], file_params).call response = Gitea::Repository::Entries::UpdateService.new(token, owner, @params[:identifier], @params[:filepath], file_params).call
render_result(response) render_result(response)
rescue Exception => exception rescue Exception => exception
fail!(exception.message) fail!(exception.message)
@ -31,7 +32,7 @@ module Gitea
private private
attr_reader :params, :user attr_reader :params, :owner, :token
def fail!(error) def fail!(error)
puts "[exception]: error" puts "[exception]: error"

View File

@ -1,5 +1,5 @@
class Gitea::Repository::Entries::CreateService < Gitea::ClientService class Gitea::Repository::Entries::CreateService < Gitea::ClientService
attr_reader :user, :repo_name, :filepath, :body attr_reader :token, :owner, :repo_name, :filepath, :body
# ref: The name of the commit/branch/tag. Default the repositorys default branch (usually master) # ref: The name of the commit/branch/tag. Default the repositorys default branch (usually master)
# filepath: path of the dir, file, symlink or submodule in the repo # filepath: path of the dir, file, symlink or submodule in the repo
@ -20,11 +20,12 @@ class Gitea::Repository::Entries::CreateService < Gitea::ClientService
# "new_branch": "string" # "new_branch": "string"
# } # }
# #
def initialize(user, repo_name, filepath, body) def initialize(token, owner, repo_name, filepath, body)
@user = user @token = token
@owner = owner
@repo_name = repo_name @repo_name = repo_name
@filepath = filepath @filepath = filepath
@body = body @body = bodys
end end
def call def call
@ -33,11 +34,11 @@ class Gitea::Repository::Entries::CreateService < Gitea::ClientService
private private
def params def params
Hash.new.merge(token: user.gitea_token, data: body) Hash.new.merge(token: token, data: body)
end end
def url def url
"/repos/#{user.login}/#{repo_name}/contents/#{filepath}".freeze "/repos/#{owner}/#{repo_name}/contents/#{filepath}".freeze
end end
end end

View File

@ -1,5 +1,5 @@
class Gitea::Repository::Entries::DeleteService < Gitea::ClientService class Gitea::Repository::Entries::DeleteService < Gitea::ClientService
attr_reader :user, :repo_name, :filepath, :body attr_reader :token, :owner, :repo_name, :filepath, :body
# ref: The name of the commit/branch/tag. Default the repositorys default branch (usually master) # ref: The name of the commit/branch/tag. Default the repositorys default branch (usually master)
# filepath: path of the dir, file, symlink or submodule in the repo # filepath: path of the dir, file, symlink or submodule in the repo
@ -19,8 +19,9 @@ class Gitea::Repository::Entries::DeleteService < Gitea::ClientService
# "new_branch": "string", # "new_branch": "string",
# "sha": "string", #require # "sha": "string", #require
# } # }
def initialize(user, repo_name, filepath, body) def initialize(token, owner, repo_name, filepath, body)
@user = user @token = token
@owner = owner
@repo_name = repo_name @repo_name = repo_name
@filepath = filepath @filepath = filepath
@body = body @body = body
@ -32,11 +33,11 @@ class Gitea::Repository::Entries::DeleteService < Gitea::ClientService
private private
def params def params
Hash.new.merge(token: user.gitea_token, data: body) Hash.new.merge(token: token, data: body)
end end
def url def url
"/repos/#{user.login}/#{repo_name}/contents/#{filepath}".freeze "/repos/#{owner}/#{repo_name}/contents/#{filepath}".freeze
end end
end end

View File

@ -1,5 +1,5 @@
class Gitea::Repository::Entries::UpdateService < Gitea::ClientService class Gitea::Repository::Entries::UpdateService < Gitea::ClientService
attr_reader :user, :repo_name, :filepath, :body attr_reader :token, :owner, :repo_name, :filepath, :body
# ref: The name of the commit/branch/tag. Default the repositorys default branch (usually master) # ref: The name of the commit/branch/tag. Default the repositorys default branch (usually master)
# filepath: path of the dir, file, symlink or submodule in the repo # filepath: path of the dir, file, symlink or submodule in the repo
@ -20,8 +20,9 @@ class Gitea::Repository::Entries::UpdateService < Gitea::ClientService
# "new_branch": "string" # "new_branch": "string"
# } # }
# #
def initialize(user, repo_name, filepath, body) def initialize(token, owner, repo_name, filepath, body)
@user = user @token = token
@owner = owner
@repo_name = repo_name @repo_name = repo_name
@filepath = filepath @filepath = filepath
@body = body @body = body
@ -33,11 +34,11 @@ class Gitea::Repository::Entries::UpdateService < Gitea::ClientService
private private
def params def params
Hash.new.merge(token: user.gitea_token, data: body) Hash.new.merge(token: token, data: body)
end end
def url def url
"/repos/#{user.login}/#{repo_name}/contents/#{filepath}".freeze "/repos/#{owner}/#{repo_name}/contents/#{filepath}".freeze
end end
end end