48 lines
1.8 KiB
Ruby
48 lines
1.8 KiB
Ruby
class InstallationsController < ApplicationController
|
||
include RegisterHelper
|
||
before_action :require_login
|
||
|
||
def index
|
||
@install_bots = BotInstall.where(:installer_id => current_user.id)
|
||
end
|
||
|
||
def auth_active
|
||
@bot = Bot.find params[:id]
|
||
@bot.client_id = Doorkeeper::OAuth::Helpers::UniqueToken.generate if params[:client_id].blank?
|
||
@bot.client_secret = Doorkeeper::OAuth::Helpers::UniqueToken.generate if params[:client_secret].blank?
|
||
@bot.private_key = OpenSSL::PKey::RSA::generate(2048).to_s
|
||
@bot.owner_id = current_user.id
|
||
ActiveRecord::Base.transaction do
|
||
# 注册bot对应oauth应用
|
||
Doorkeeper::Application.create!(name: @bot.name, uid: @bot.client_id, secret: @bot.client_secret, redirect_uri: "https://gitlink.org.cn")
|
||
# 注册bot对应用户
|
||
result = autologin_register(User.generate_user_login('b'), nil, "b58333123413", 'bot', nickname: @bot.name)
|
||
tip_exception(-1, result[:message]) if result[:message].present?
|
||
@bot.uid = result[:user][:id]
|
||
@bot.save
|
||
render_ok
|
||
end
|
||
rescue Exception => e
|
||
tip_exception(-1, e.message)
|
||
end
|
||
end
|
||
|
||
def access_tokens
|
||
@install_bot = BotInstall.find params[:id]
|
||
@bot = @install_bot.bot
|
||
@application = Doorkeeper::Application.find_by(uid: @bot.client_id, secret: @bot.client_secret)
|
||
if @application.present?
|
||
# 给bot生成token,因为bot是机器人操作
|
||
@access_token = Doorkeeper::AccessToken.create!({ :application_id => @application.id,
|
||
:resource_owner_id => @bot.uid,
|
||
:scopes => "public write",
|
||
:expires_in => "604800",
|
||
:use_refresh_token => true
|
||
})
|
||
end
|
||
render_ok(token: @access_token.token)
|
||
end
|
||
|
||
end
|
||
|