From 1ecd82c1d08fcf0d2578cee1a29794870be7a3a2 Mon Sep 17 00:00:00 2001 From: Peter Bhat Harkins Date: Wed, 12 Jun 2019 20:20:13 -0500 Subject: [PATCH] keybase unlinking --- app/controllers/keybase_proofs_controller.rb | 11 ++++++++++- app/models/user.rb | 7 ++++++- app/views/keybase_proofs/_proofs.html.erb | 6 +----- app/views/users/show.html.erb | 19 ++++++++++--------- config/environments/development.rb | 3 +++ config/routes.rb | 2 +- spec/features/settings_spec.rb | 1 - 7 files changed, 31 insertions(+), 18 deletions(-) diff --git a/app/controllers/keybase_proofs_controller.rb b/app/controllers/keybase_proofs_controller.rb index 05d039d6..d2e04d9e 100644 --- a/app/controllers/keybase_proofs_controller.rb +++ b/app/controllers/keybase_proofs_controller.rb @@ -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 diff --git a/app/models/user.rb b/app/models/user.rb index 2dd812b2..81b0d75b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -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 diff --git a/app/views/keybase_proofs/_proofs.html.erb b/app/views/keybase_proofs/_proofs.html.erb index b56e2f16..6beffd98 100644 --- a/app/views/keybase_proofs/_proofs.html.erb +++ b/app/views/keybase_proofs/_proofs.html.erb @@ -1,12 +1,8 @@ <% if user.keybase_signatures? %> - Linked to <% user.keybase_signatures.each do |kbs| %> <%= link_to "@#{kbs[:kb_username]}", keybase_user_link(kbs) %> <%= link_to "✔", keybase_proof_link(kbs) %> - <% if for_self %> - <%= link_to "Delete", "https://keybase.io/download" %>:
-
keybase sigs revoke <%= kbs[:sig_hash] %>
) - <% 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" %>
keybase prove lobste.rs
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index 4be3682b..d2952a41 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -109,6 +109,16 @@
<% end %> + <% if @showing_user.homepage.present? %> + + + + <%= h(@showing_user.homepage) %> + +
+ <% end %> + <% if @showing_user.github_username.present? %> @@ -138,15 +148,6 @@ <%= render :partial => "keybase_proofs/proofs", locals: {user: @showing_user, for_self: for_self} %> <% end %> - <% end %> - - <% if @showing_user.homepage.present? %> - - - - <%= h(@showing_user.homepage) %> -
<% end %> diff --git a/config/environments/development.rb b/config/environments/development.rb index f28c7a35..e267083f 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -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' } diff --git a/config/routes.rb b/config/routes.rb index 4df43ea9..27a8c4d2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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" diff --git a/spec/features/settings_spec.rb b/spec/features/settings_spec.rb index d45da8f4..f38df195 100644 --- a/spec/features/settings_spec.rb +++ b/spec/features/settings_spec.rb @@ -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, }