keybase unlinking

This commit is contained in:
Peter Bhat Harkins 2019-06-12 20:20:13 -05:00
parent 6d9bd0f013
commit 1ecd82c1d0
7 changed files with 31 additions and 18 deletions

View File

@ -1,5 +1,5 @@
class KeybaseProofsController < ApplicationController
before_action :require_logged_in_user, only: [:new, :create]
before_action :require_logged_in_user, only: [:new, :create, :destroy]
before_action :check_new_params, only: :new
before_action :check_user_matches, only: :new
before_action :force_to_json, only: [:kbconfig]
@ -25,6 +25,15 @@ class KeybaseProofsController < ApplicationController
end
end
def destroy
@user.remove_keybase_proof(params[:id])
@user.save!
redirect_to(
user_path(@user),
notice: "Removed from profile. You still need to delete it from the Keybase site or app."
)
end
def kbconfig
return render json: {} unless Keybase.enabled?
@domain = Keybase.DOMAIN

View File

@ -441,10 +441,15 @@ class User < ApplicationRecord
def add_or_update_keybase_proof(kb_username, kb_signature)
self.keybase_signatures ||= []
self.keybase_signatures.reject! {|kbsig| kbsig['kb_username'] == kb_username }
self.remove_keybase_proof(kb_username)
self.keybase_signatures.push('kb_username' => kb_username, 'sig_hash' => kb_signature)
end
def remove_keybase_proof(kb_username)
self.keybase_signatures ||= []
self.keybase_signatures.reject! {|kbsig| kbsig['kb_username'] == kb_username }
end
def is_heavy_self_promoter?
total_count = self.stories_submitted_count

View File

@ -1,12 +1,8 @@
<% if user.keybase_signatures? %>
Linked to
<% user.keybase_signatures.each do |kbs| %>
<strong><%= link_to "@#{kbs[:kb_username]}", keybase_user_link(kbs) %></strong>
<strong><%= link_to "✔", keybase_proof_link(kbs) %></strong>
<% if for_self %>
<%= link_to "Delete", "https://keybase.io/download" %>:<br>
<pre>keybase sigs revoke <%= kbs[:sig_hash] %></pre>)
<% end %>
<% if for_self %>(<%= link_to "Unlink", keybase_proof_path(kbs[:kb_username]), method: :delete %>)<% end %>
<% end %>
<% elsif for_self %>
<%= link_to "Run", "https://keybase.io/download" %> <pre>keybase prove lobste.rs</pre>

View File

@ -109,6 +109,16 @@
<div style="clear: both;"></div>
<% end %>
<% if @showing_user.homepage.present? %>
<label class="required">Homepage:</label>
<span class="d">
<a href="<%= h(@showing_user.homepage) %>"
rel="me nofollow"><%= h(@showing_user.homepage) %></a>
</span>
<br>
<% end %>
<% if @showing_user.github_username.present? %>
<label class="required">GitHub:</label>
@ -138,15 +148,6 @@
<%= render :partial => "keybase_proofs/proofs", locals: {user: @showing_user, for_self: for_self} %>
</span>
<% end %>
<% end %>
<% if @showing_user.homepage.present? %>
<label class="required">Homepage:</label>
<span class="d">
<a href="<%= h(@showing_user.homepage) %>"
rel="me nofollow"><%= h(@showing_user.homepage) %></a>
</span>
<br>
<% end %>

View File

@ -60,3 +60,6 @@ Rails.application.configure do
Bullet.rails_logger = true
end
end
Keybase.DOMAIN = Rails.application.domain
Keybase.BASE_URL = ENV.fetch('KEYBASE_BASE_URL') { 'https://keybase.io' }

View File

@ -147,7 +147,7 @@ Rails.application.routes.draw do
get "/settings/twitter_callback" => "settings#twitter_callback"
post "/settings/twitter_disconnect" => "settings#twitter_disconnect"
resources :keybase_proofs, only: [:new, :create]
resources :keybase_proofs, only: [:new, :create, :destroy]
get "/.well-known/keybase-proof-config" => "keybase_proofs#kbconfig", :as => "keybase_config"
get "/filters" => "filters#index"

View File

@ -12,7 +12,6 @@ RSpec.feature "Settings" do
comment = create :comment, user: user
allow_any_instance_of(User).to receive(:authenticate).with('pass').and_return(true)
puts "inactive #{inactive_user.id}, user #{user.id}"
page.driver.post '/settings/delete_account', user: {
i_am_sure: true, password: 'pass', disown: true,
}