gitlink-forgeplus/app/controllers/public_keys_controller.rb

62 lines
1.8 KiB
Ruby

class PublicKeysController < ApplicationController
before_action :require_login
before_action :find_public_key, only: [:destroy]
def index
@public_keys = current_user.public_keys
@public_keys = kaminari_paginate(@public_keys)
rescue Exception => e
uid_logger_error(e.message)
tip_exception(e.message)
end
def create
return render_error("请输入密钥") if public_key_params[:key].blank?
return render_error("请输入标题") if public_key_params[:title].blank?
@gitea_response = Gitea::User::Keys::CreateService.call(current_user.gitea_token, public_key_params)
if @gitea_response[0] == 201
@public_key = @gitea_response[2]
puts @public_key
else
return render_error if @gitea_response[2]["message"].nil?
return render_error("密钥格式不正确") if @gitea_response[2]["message"].starts_with?("Invalid key content")
return render_error("密钥已存在,请勿重复添加") if @gitea_response[2]["message"].starts_with?("Key content has been used as non-deploy key")
puts @gitea_response[2]
@public_key = nil
end
rescue Exception => e
uid_logger_error(e.message)
tip_exception(e.message)
end
def destroy
return render_not_found unless @public_key.present?
if @public_key.destroy
render_ok
else
render_error
end
rescue Exception => e
uid_logger_error(e.message)
tip_exception(e.message)
end
private
def page
params[:page].to_i.zero? ? 1 : params[:page].to_i
end
def limit
limit = params[:limit] || params[:per_page]
limit = (limit.to_i.zero? || limit.to_i > 15) ? 15 : limit.to_i
end
def public_key_params
params.require(:public_key).permit(:key, :title)
end
def find_public_key
@public_key = current_user.public_keys.find_by_id(params[:id])
end
end