| @@ -0,0 +1,18 @@ | |||||
| class Trace::BaseController < ApplicationController | |||||
| helper_method :observed_logged_user?, :observed_user | |||||
| def observed_user | |||||
| @_observed_user ||= (User.find_by_login(params[:user_id]) || User.find_by_id(params[:user_id])) | |||||
| end | |||||
| def observed_logged_user? | |||||
| observed_user.id == User.current&.id | |||||
| end | |||||
| protected | |||||
| def check_auth | |||||
| return render_forbidden unless current_user.admin? || observed_logged_user? | |||||
| end | |||||
| end | |||||
| @@ -0,0 +1,60 @@ | |||||
| class Trace::ProjectsController < Trace::BaseController | |||||
| before_action :require_login | |||||
| before_action :load_project | |||||
| def tasks | |||||
| branch_name = params[:branch_name] | |||||
| [code, data, error] = Trace::CheckService.call(current_user.trace_token, @project, "1", branch_name) | |||||
| if code == 200 | |||||
| render_ok | |||||
| else | |||||
| render_error(-1, "检测失败 Error:#{error}") | |||||
| end | |||||
| rescue Exception => exception | |||||
| puts exception.message | |||||
| normal_status(-1, exception.message) | |||||
| end | |||||
| def task_results | |||||
| limit = params[:limit] || params[:per_page] | |||||
| limit = (limit.to_i.zero? || limit.to_i > 15) ? 15 : limit.to_i | |||||
| page = params[:page].to_i.zero? ? 1 : params[:page].to_i | |||||
| [code, data, error] = Trace::CheckResultService.call(current_user.trace_token, @project, nil, page, limit) | |||||
| if code == 200 | |||||
| render :json => {data: data} | |||||
| else | |||||
| render_error(-1, "获取检测记录失败 Error:#{error}") | |||||
| end | |||||
| rescue Exception => exception | |||||
| puts exception.message | |||||
| normal_status(-1, exception.message) | |||||
| end | |||||
| def reload_task | |||||
| render_error(-1, "project_id错误") if params[:project_id].blank? | |||||
| [code, data, error] = Trace::ReloadCheckService.call(current_user.trace_token, params[:project_id]) | |||||
| if code == 200 | |||||
| render_ok | |||||
| else | |||||
| render_error(-1, "重新检测失败 Error:#{error}") | |||||
| end | |||||
| rescue Exception => exception | |||||
| puts exception.message | |||||
| normal_status(-1, exception.message) | |||||
| end | |||||
| def task_pdf | |||||
| render_error(-1, "task_id错误") if params[:task_id].blank? | |||||
| [code, data, error] = Trace::PdfReportService.call(current_user.trace_token, params[:task_id]) | |||||
| if code == 200 | |||||
| render_ok | |||||
| else | |||||
| render_error(-1, "下载报告失败 Error:#{error}") | |||||
| end | |||||
| rescue Exception => exception | |||||
| puts exception.message | |||||
| normal_status(-1, exception.message) | |||||
| end | |||||
| end | |||||
| @@ -0,0 +1,14 @@ | |||||
| class Trace::TraceUsersController < Trace::BaseController | |||||
| before_action :require_auth | |||||
| def create | |||||
| if current_user.trace_token.present? | |||||
| render_ok | |||||
| else | |||||
| render_error(-1, "代码溯源用户初始化失败") | |||||
| end | |||||
| rescue Exception => exception | |||||
| puts exception.message | |||||
| normal_status(-1, exception.message) | |||||
| end | |||||
| end | |||||
| @@ -1,11 +1,11 @@ | |||||
| # 代码溯源 查询检测结果 | # 代码溯源 查询检测结果 | ||||
| class Trace::CheckResultService < Trace::ClientService | class Trace::CheckResultService < Trace::ClientService | ||||
| attr_accessor :token, :project_name, :file_name, :page_num, :page_size | |||||
| attr_accessor :token, :project, :file_name, :page_num, :page_size | |||||
| def initialize(token, project_name=nil, file_name=nil, page_num=1, page_size=15) | |||||
| def initialize(token, project, file_name=nil, page_num=1, page_size=15) | |||||
| @token = token | @token = token | ||||
| @project_name = project_name | |||||
| @project = project | |||||
| @file_name = file_name | @file_name = file_name | ||||
| @page_num = page_num | @page_num = page_num | ||||
| @page_size = page_size | @page_size = page_size | ||||
| @@ -19,7 +19,7 @@ class Trace::CheckResultService < Trace::ClientService | |||||
| private | private | ||||
| def request_params | def request_params | ||||
| { | { | ||||
| product_name: project_name, | |||||
| product_name: "#{project&.owner&.login}-#{project.identifier}", | |||||
| file_name: file_name, | file_name: file_name, | ||||
| pageNum: page_num, | pageNum: page_num, | ||||
| pageSize: page_size, | pageSize: page_size, | ||||
| @@ -17,9 +17,9 @@ class Trace::CheckService < Trace::ClientService | |||||
| private | private | ||||
| def request_params | def request_params | ||||
| repo = Gitea::Repository::GetService.call(project&.owner&.login, project&.identifier) | |||||
| repo = Gitea::Repository::GetService.call(project&.owner, project&.identifier) | |||||
| { | { | ||||
| product_name: project&.name, | |||||
| product_name: "#{project&.owner&.login}-#{project&.identifier}", | |||||
| product_type: project&.category&.name, | product_type: project&.category&.name, | ||||
| code_type: project&.language&.name, | code_type: project&.language&.name, | ||||
| product_desc: project&.description, | product_desc: project&.description, | ||||
| @@ -677,6 +677,20 @@ Rails.application.routes.draw do | |||||
| end | end | ||||
| # Project Area END | # Project Area END | ||||
| namespace :trace do | |||||
| resources :trace_users, only: [:create] | |||||
| scope "/:owner/:repo" do | |||||
| resource :projects, path: '/', only: [:index] do | |||||
| member do | |||||
| post :tasks | |||||
| get :task_results | |||||
| get :reload_task | |||||
| get :task_pdf | |||||
| end | |||||
| end | |||||
| end | |||||
| end | |||||
| scope module: :helps do | scope module: :helps do | ||||
| resources :faqs, only: [:index] | resources :faqs, only: [:index] | ||||
| end | end | ||||