class SitePagesController < ApplicationController before_action :require_login, except: [:softbot_build, :themes] before_action :require_profile_completed, only: [:create] before_action :load_project, except: [:softbot_build, :index, :themes] before_action :authenticate_user!, except: [:softbot_build, :index, :themes] def index @pages = PageQuery.call(params,current_user) @pages = paginate(@pages) end def show @page = Page.find_by(user_id: current_user.id, project_id: @project.id) return render_ok({data:nil}) unless @page.present? end def create return normal_status(-1, "您还未通过身份认证,无法开通Page") unless current_user.id_card_verify return normal_status(-1, "您还未开通Page服务,无法进行部署") unless current_user.website_permission return normal_status(-1, "你已使用了 #{params[:identifier]} 作为page标识") if Page.exists?(identifier: params[:identifier], user: current_user) return normal_status(-1, "该仓库已开通Page服务") if Page.exists?(project: @project) @page = Page.new(create_params) @page.user = current_user @page.project = @project @page.save end def build return normal_status(-1, "您还未开通Page服务,无法进行部署") unless current_user.website_permission return normal_status(-1, "该仓库还未开通Page服务,无法进行部署") unless Page.exists?(project: @project) @page = Page.find params[:id] return normal_status(-1, @page.state_description) unless @page.state response_str = @page.deploy_page(params[:branch]) data = JSON.parse(response_str)["result"] if data.nil? data = JSON.parse(response_str)["error"] end @page.update(last_build_at: Time.now) render_ok({data: data.nil? ? nil : data.split("\n") }) end def softbot_build branch = params[:ref].split("/").last user = User.find_by_login params[:repository][:owner][:login] return normal_status(-1, "您还未开通Page服务,无法进行部署") unless user.website_permission project = Project.where(identifier: params[:repository][:name],user_id: user.id) return normal_status(-1, "你没有权限操作") if project.owner?(user) return normal_status(-1, "该仓库还未开通Page服务,无法进行部署") if Page.exists?(user: user, project: project) @page = Page.find_by(user: user, project: project) @page.deploy_page(branch) render_ok end def themes data = YAML.load_file(Rails.root.join('config/admins', 'page_themes.yml')) render_ok({themes:data[theme_params.downcase]}) end private def authenticate_user! return if @project.is_public return if @project.owner?(current_user) render_forbidden('你没有权限操作') end def theme_params params[:theme] || "hugo" end def create_params params.permit(:identifier, :language_frame, :theme, :site_name) end end