mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-17 02:05:58 +08:00
Merge branch 'standalone_develop' into pre_trustie_server
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
class Api::V1::Projects::Actions::ActionsController < Api::V1::Projects::Actions::BaseController
|
||||
|
||||
def index
|
||||
begin
|
||||
gitea_result = $gitea_hat_client.get_repos_actions_by_owner_repo(@project&.owner&.login, @project&.identifier)
|
||||
@data = gitea_result[:data]["Workflows"]
|
||||
rescue
|
||||
@data = []
|
||||
end
|
||||
end
|
||||
|
||||
def disable
|
||||
return render_error("请输入正确的流水线文件!") if params[:workflow].blank?
|
||||
gitea_result = $gitea_hat_client.post_repos_actions_disable(@project&.owner&.login, @project&.identifier, {query: {workflow: params[:workflow]}}) rescue nil
|
||||
if gitea_result
|
||||
render_ok
|
||||
else
|
||||
render_error("禁用流水线失败")
|
||||
end
|
||||
end
|
||||
|
||||
def enable
|
||||
return render_error("请输入正确的流水线文件!") if params[:workflow].blank?
|
||||
gitea_result = $gitea_hat_client.post_repos_actions_enable(@project&.owner&.login, @project&.identifier, {query: {workflow: params[:workflow]}}) rescue nil
|
||||
if gitea_result
|
||||
render_ok
|
||||
else
|
||||
render_error("取消禁用流水线失败")
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,4 @@
|
||||
class Api::V1::Projects::Actions::BaseController < Api::V1::BaseController
|
||||
before_action :require_public_and_member_above
|
||||
|
||||
end
|
||||
12
app/controllers/api/v1/projects/actions/runs_controller.rb
Normal file
12
app/controllers/api/v1/projects/actions/runs_controller.rb
Normal file
@@ -0,0 +1,12 @@
|
||||
class Api::V1::Projects::Actions::RunsController < Api::V1::Projects::Actions::BaseController
|
||||
|
||||
def index
|
||||
@result_object = Api::V1::Projects::Actions::Runs::ListService.call(@project, {workflow: params[:workflow], page: page, limit: limit}, current_user&.gitea_token)
|
||||
puts @result_object
|
||||
end
|
||||
|
||||
def job_show
|
||||
@result_object = Api::V1::Projects::Actions::Runs::JobShowService.call(@project, params[:run_id], params[:job], params[:log_cursors], current_user&.gitea_token)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -2,14 +2,14 @@ class Api::V1::Projects::BranchesController < Api::V1::BaseController
|
||||
before_action :require_public_and_member_above, only: [:index, :all]
|
||||
|
||||
def index
|
||||
@result_object = Api::V1::Projects::Branches::ListService.call(@project, {name: params[:keyword], page: page, limit: limit}, current_user&.gitea_token)
|
||||
@result_object = Api::V1::Projects::Branches::ListService.call(@project, {name: params[:keyword], state: params[:state], page: page, limit: limit}, current_user&.gitea_token)
|
||||
end
|
||||
|
||||
def all
|
||||
@result_object = Api::V1::Projects::Branches::AllListService.call(@project, current_user&.gitea_token)
|
||||
end
|
||||
|
||||
before_action :require_operate_above, only: [:create, :destroy]
|
||||
before_action :require_operate_above, only: [:create, :destroy, :restore]
|
||||
|
||||
def create
|
||||
@result_object = Api::V1::Projects::Branches::CreateService.call(@project, branch_params, current_user&.gitea_token)
|
||||
@@ -33,6 +33,15 @@ class Api::V1::Projects::BranchesController < Api::V1::BaseController
|
||||
end
|
||||
end
|
||||
|
||||
def restore
|
||||
@result_object = Api::V1::Projects::Branches::RestoreService.call(@project, params[:branch_id], params[:branch_name], current_user&.gitea_token)
|
||||
if @result_object
|
||||
return render_ok
|
||||
else
|
||||
return render_error('恢复分支失败!')
|
||||
end
|
||||
end
|
||||
|
||||
before_action :require_manager_above, only: [:update_default_branch]
|
||||
|
||||
def update_default_branch
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Api::V1::Projects::CommitsController < Api::V1::BaseController
|
||||
before_action :require_public_and_member_above, only: [:index, :diff]
|
||||
before_action :require_public_and_member_above, only: [:index, :diff, :recent]
|
||||
|
||||
def index
|
||||
@result_object = Api::V1::Projects::Commits::ListService.call(@project, {page: page, limit: limit, sha: params[:sha]}, current_user&.gitea_token)
|
||||
@@ -9,4 +9,8 @@ class Api::V1::Projects::CommitsController < Api::V1::BaseController
|
||||
def diff
|
||||
@result_object = Api::V1::Projects::Commits::DiffService.call(@project, params[:sha], current_user&.gitea_token)
|
||||
end
|
||||
|
||||
def recent
|
||||
@result_object = Api::V1::Projects::Commits::RecentService.call(@project, {keyword: params[:keyword], page: page, limit: limit}, current_user&.gitea_token)
|
||||
end
|
||||
end
|
||||
@@ -715,7 +715,7 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
def find_user_with_id
|
||||
@user = User.find_by_id params[:user_id]
|
||||
@user = User.find_by(type: 'User', id: params[:user_id])
|
||||
# render_not_found("未找到’#{params[:login]}’相关的用户") unless @user
|
||||
render_error("未找到相关的用户") unless @user
|
||||
end
|
||||
|
||||
@@ -8,7 +8,7 @@ class BindUsersController < ApplicationController
|
||||
bind_user = User.try_to_login(params[:username], params[:password])
|
||||
tip_exception '用户名或者密码错误' if bind_user.blank?
|
||||
tip_exception '用户名或者密码错误' unless bind_user.check_password?(params[:password].to_s)
|
||||
tip_exception '参数错误' unless ["qq", "wechat", "gitee", "github", "educoder"].include?(params[:type].to_s)
|
||||
tip_exception '参数错误' unless ["qq", "wechat", "gitee", "github", "educoder", "acge"].include?(params[:type].to_s)
|
||||
tip_exception '该账号已被绑定,请更换其他账号进行绑定' if bind_user.bind_open_user?(params[:type].to_s)
|
||||
|
||||
"OpenUsers::#{params[:type].to_s.capitalize}".constantize.create!(user: bind_user, uid: session[:unionid])
|
||||
|
||||
67
app/controllers/oauth/acge_controller.rb
Normal file
67
app/controllers/oauth/acge_controller.rb
Normal file
@@ -0,0 +1,67 @@
|
||||
class Oauth::AcgeController < Oauth::BaseController
|
||||
include RegisterHelper
|
||||
|
||||
def create
|
||||
begin
|
||||
uid = params['uid'].to_s.strip
|
||||
tip_exception("uid不能为空") if uid.blank?
|
||||
redirect_uri = params['redirect_uri'].to_s.strip
|
||||
tip_exception("redirect_uri不能为空") if redirect_uri.blank?
|
||||
email = params['email'].to_s.strip
|
||||
tip_exception("email不能为空") if email.blank?
|
||||
phone = params['phone'].to_s.strip
|
||||
tip_exception("phone不能为空") if phone.blank?
|
||||
name = params['name'].to_s.strip
|
||||
tip_exception("name不能为空") if name.blank?
|
||||
|
||||
open_user = OpenUsers::Acge.find_by(uid: uid)
|
||||
if open_user.present? && open_user.user.present?
|
||||
successful_authentication(open_user.user)
|
||||
redirect_to redirect_uri
|
||||
return
|
||||
else
|
||||
if current_user.blank? || !current_user.logged?
|
||||
session[:unionid] = uid
|
||||
user = User.find_by(mail: email) || User.find_by(phone: phone)
|
||||
if user.present?
|
||||
OpenUsers::Acge.create!(user: user, uid: uid)
|
||||
successful_authentication(user)
|
||||
redirect_to redirect_uri
|
||||
|
||||
return
|
||||
else
|
||||
username = uid[0..7]
|
||||
password = SecureRandom.hex(4)
|
||||
reg_result = autologin_register(username, email, password, 'acge', phone, name)
|
||||
existing_rows = CSV.read("public/操作系统大赛用户信息.csv")
|
||||
new_row = [username, email, password, phone, name]
|
||||
existing_rows << new_row
|
||||
CSV.open("public/操作系统大赛用户信息.csv", 'wb') do |csv|
|
||||
existing_rows.each { |row| csv << row }
|
||||
end
|
||||
if reg_result[:message].blank?
|
||||
open_user = OpenUsers::Acge.create!(user_id: reg_result[:user][:id], uid: uid)
|
||||
successful_authentication(open_user.user)
|
||||
redirect_to redirect_uri
|
||||
|
||||
return
|
||||
else
|
||||
render_error(reg_result[:message])
|
||||
end
|
||||
end
|
||||
else
|
||||
OpenUsers::Acge.create!(user: current_user, uid: uid)
|
||||
successful_authentication(current_user)
|
||||
redirect_to redirect_uri
|
||||
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
Rails.logger.info("[OAuth2] session[:unionid] -> #{session[:unionid]}")
|
||||
# redirect_to "/bindlogin/acge?redirect_uri=#{redirect_uri}"
|
||||
rescue Exception => ex
|
||||
render_error(ex.message)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -4,17 +4,31 @@ class Organizations::OrganizationUsersController < Organizations::BaseController
|
||||
before_action :check_user_can_edit_org, only: [:destroy]
|
||||
|
||||
def index
|
||||
@organization_users = @organization.organization_users.includes(:user)
|
||||
# @organization_users = @organization.organization_users.includes(:user)
|
||||
# if params[:search].present?
|
||||
# search = params[:search].to_s.downcase
|
||||
# user_condition_users = User.like(search).to_sql
|
||||
# team_condition_teams = User.joins(:teams).merge(@organization.teams.like(search)).to_sql
|
||||
# users = User.from("( #{user_condition_users} UNION #{team_condition_teams }) AS users")
|
||||
#
|
||||
# @organization_users = @organization_users.where(user_id: users).distinct
|
||||
# end
|
||||
#
|
||||
# @organization_users = kaminari_paginate(@organization_users)
|
||||
|
||||
organization_user_ids = @organization.organization_users.pluck(:user_id).uniq
|
||||
project_member_user_ids = @organization.projects.joins(:members).pluck("members.user_id").uniq
|
||||
ids = organization_user_ids + project_member_user_ids
|
||||
users = User.where(id: ids).reorder(Arel.sql("FIELD(users.id,#{ids.join(',')})"))
|
||||
if params[:search].present?
|
||||
search = params[:search].to_s.downcase
|
||||
user_condition_users = User.like(search).to_sql
|
||||
team_condition_teams = User.joins(:teams).merge(@organization.teams.like(search)).to_sql
|
||||
users = User.from("( #{user_condition_users} UNION #{team_condition_teams }) AS users")
|
||||
user_ids = User.from("( #{user_condition_users} UNION #{team_condition_teams }) AS users").pluck(:id)
|
||||
|
||||
@organization_users = @organization_users.where(user_id: users).distinct
|
||||
users = users.where(id: user_ids)
|
||||
end
|
||||
|
||||
@organization_users = kaminari_paginate(@organization_users)
|
||||
@users = kaminari_paginate(users)
|
||||
end
|
||||
|
||||
def pm_check_user
|
||||
|
||||
@@ -193,13 +193,19 @@ class ProjectsController < ApplicationController
|
||||
default_branch: @project.default_branch
|
||||
}
|
||||
Gitea::Repository::UpdateService.call(@owner, @project.identifier, gitea_params)
|
||||
elsif project_params.has_key?("has_actions")
|
||||
gitea_params = {
|
||||
has_actions: project_params[:has_actions]
|
||||
}
|
||||
Gitea::Repository::UpdateService.call(@owner, @project.identifier, gitea_params)
|
||||
else
|
||||
validate_params = project_params.slice(:name, :description,
|
||||
:project_category_id, :project_language_id, :private, :identifier)
|
||||
|
||||
Projects::UpdateForm.new(validate_params.merge(user_id: @project.user_id, project_identifier: @project.identifier, project_name: @project.name)).validate!
|
||||
|
||||
private = @project.forked_from_project.present? ? !@project.forked_from_project.is_public : params[:private] || false
|
||||
private = params[:private].nil? ? !@project.is_public : params[:private]
|
||||
private = @project.forked_from_project.present? ? !@project.forked_from_project.is_public : private
|
||||
|
||||
new_project_params = project_params.except(:private).merge(is_public: !private)
|
||||
@project.update_attributes!(new_project_params)
|
||||
@@ -347,7 +353,7 @@ class ProjectsController < ApplicationController
|
||||
|
||||
def project_params
|
||||
params.permit(:user_id, :name, :description, :repository_name, :website, :lesson_url, :default_branch, :identifier,
|
||||
:project_category_id, :project_language_id, :license_id, :ignore_id, :private,
|
||||
:project_category_id, :project_language_id, :license_id, :ignore_id, :private, :has_actions,
|
||||
:blockchain, :blockchain_token_all, :blockchain_init_token, :pr_view_admin)
|
||||
end
|
||||
|
||||
|
||||
@@ -203,6 +203,7 @@ class PullRequestsController < ApplicationController
|
||||
|
||||
def pr_merge
|
||||
return render_forbidden("你没有权限操作.") unless @project.operator?(current_user)
|
||||
return normal_status(-1, "该分支存在冲突,无法自动合并.") unless @pull_request.conflict_files.blank?
|
||||
|
||||
if params[:do].blank?
|
||||
normal_status(-1, "请选择合并方式")
|
||||
|
||||
@@ -66,6 +66,8 @@ class RepositoriesController < ApplicationController
|
||||
@entries = Gitea::Repository::Entries::ListService.new(@owner, @project.identifier, ref: @ref).call
|
||||
@entries = @entries.present? ? @entries.sort_by{ |hash| hash['type'] } : []
|
||||
@path = GiteaService.gitea_config[:domain]+"/#{@project.owner.login}/#{@project.identifier}/raw/branch/#{@ref}/"
|
||||
@repo_detail = $gitea_client.get_repos_by_owner_repo(@owner.login, @project.identifier)
|
||||
return render_not_found if @entries.blank? && !@repo_detail["empty"]
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user