dev_forge
Jasder 5 years ago
parent e9284ba3fe
commit d721d177c0

@ -0,0 +1,12 @@
module OperateProjectAbilityAble
extend ActiveSupport::Concern
included do
end
def authorizate_user_can_edit_project!
return if current_user.project_manager? @project || current_user.admin?
render_forbidden('你没有权限操作.')
end
end

@ -1,5 +1,7 @@
class MainController < ApplicationController class MainController < ApplicationController
protect_from_forgery except: :index
def index def index
render file: 'public/react/build/index.html', :layout => false render file: 'public/react/build/index.html', :layout => false
end end
end end

@ -1,7 +1,10 @@
class ProjectsController < ApplicationController class ProjectsController < ApplicationController
include ApplicationHelper include ApplicationHelper
include OperateProjectAbilityAble
before_action :require_login, except: %i[index branches group_type_list] before_action :require_login, except: %i[index branches group_type_list]
before_action :find_project, only: %i[branches] before_action :find_project_with_identifier, only: %i[branches]
before_action :find_project_with_id, only: %i[update show]
before_action :authorizate_user_can_edit_project!, only: %i[update]
def index def index
scope = Projects::ListQuery.call(params) scope = Projects::ListQuery.call(params)
@ -37,6 +40,19 @@ class ProjectsController < ApplicationController
@project_group_list = Project.visible.group(:project_type).select('project_type, count(*) AS projects_count') @project_group_list = Project.visible.group(:project_type).select('project_type, count(*) AS projects_count')
end end
def update
ActiveRecord::Base.transaction do
Projects::CreateForm.new(project_params).validate!
@project.update_attributes!(project_params)
end
rescue Exception => e
uid_logger_error(e.message)
tip_exception(e.message)
end
def show
end
private private
def project_params def project_params
params.permit(:user_id, :name, :description, :repository_name, params.permit(:user_id, :name, :description, :repository_name,

@ -1,5 +1,4 @@
class SettingsController < ApplicationController class SettingsController < ApplicationController
def show def show
@laboratory = current_laboratory
end end
end end

@ -0,0 +1,4 @@
class Projects::UpdateForm < BaseForm
attr_reader :name, :description, :repository_name, :project_category_id
end

@ -0,0 +1,39 @@
module Repositories
class GetInteractor
def self.call(user, repo)
interactor = new(user, repo)
interactor.run
interactor
end
attr_reader :error, :result
def initialize(user, repo)
@user = user
@repo = repo
end
def success?
@error.nil?
end
def result
@result
end
def run
@result = Gitea::Repository::GetService.new(@user, @repo.identifier).call
rescue Exception => exception
fail!(exception.message)
end
private
attr_reader :user, :repo
def fail!(error)
@error = error
end
end
end

@ -48,17 +48,13 @@ class Gitea::ClientService < ApplicationService
end end
end end
def update(url, params={}) def patch(url, params={})
puts "[gitea] request params: #{params}" puts "[gitea] request params: #{params}"
request_url = [api_url, url].join('').freeze
auth_token = authen_params(params[:token]) auth_token = authen_params(params[:token])
response = conn(auth_token).patch do |req| conn(auth_token).patch do |req|
req.url "#{request_url}" req.url full_url(url)
req.body = params[:data].to_json req.body = params[:data].to_json
end end
render_status(response)
end end
def put(url, params={}) def put(url, params={})

@ -0,0 +1,33 @@
class Gitea::Repository::UpdateService < Gitea::ClientService
attr_reader :user, :repo, :params
# params:
# {
# name: 'name of the repository',
# default_branch: 'sets the default branch for this repository.',
# description: 'string a short description of the repository.',
# private: 'boolean either true to make the repository private or false to make it public.',
# has_issues: 'boolean either true to enable issues for this repository or false to disable them.',
# has_pull_requests: 'boolean either true to allow pull requests, or false to prevent pull request.',
# allow_merge_commits: 'boolean either true to allow merging pull requests with a merge commit, or false to prevent merging pull requests with merge commits. has_pull_requests must be true.'
# }
def initialize(user, repo, params={})
@user = user
@repo = repo
@params = params
end
def call
patch(url, data_params)
end
private
def url
"/repos/#{user.login}/#{repo}"
end
def data_params
Hash.new.merge(token: user.gitea_token, data: params)
end
end

@ -0,0 +1,6 @@
json.name @project.name
json.identifier @project.identifier
json.is_public @project.is_public
json.description @project.description
json.repo_id @project.repository.id
json.repo_identifier @project.repository.identifier
Loading…
Cancel
Save