From 8aa48f1ac2d61a2d9d5cd38db8eba3cb25051a49 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Thu, 21 Nov 2024 14:28:40 -0600 Subject: [PATCH] update bluesky atproto setup to use .well-known vs dns --- app/settings.rb | 13 ++++++----- models/site.rb | 1 - tests/acceptance/settings/site_tests.rb | 29 +++++++++++++++++++++++++ views/settings/site.erb | 5 +---- views/settings/site/bluesky.erb | 15 ++++--------- 5 files changed, 41 insertions(+), 22 deletions(-) diff --git a/app/settings.rb b/app/settings.rb index 3f6a02c3..c400cfed 100644 --- a/app/settings.rb +++ b/app/settings.rb @@ -31,8 +31,6 @@ get '/settings/:username/?' do |username| require_login require_ownership_for_settings - @bluesky_did = $redis_proxy.hget "dns-_atproto.#{@site.username}.neocities.org", 'TXT' - @title = "Site settings for #{username}" erb :'settings/site' end @@ -191,16 +189,19 @@ end post '/settings/:username/bluesky_set_did' do require_login require_ownership_for_settings - redirect '/settings' if !@site.domain.empty? # todo standards based validation if params[:did].length > 50 flash[:error] = 'DID provided was too long' - elsif !params[:did].match(/^did=did:plc:([a-z|0-9)]+)$/) + elsif !params[:did].match(/^did:plc:([a-z|0-9)]+)$/) flash[:error] = 'DID was invalid' else - $redis_proxy.hset "dns-_atproto.#{@site.username}.neocities.org", 'TXT', params[:did] - flash[:success] = 'DID set! You can now verify the domain on the Bluesky app.' + tmpfile = Tempfile.new 'atproto-did' + tmpfile.write params[:did] + tmpfile.close + + @site.store_files [{filename: '.well-known/atproto-did', tempfile: tmpfile}] + flash[:success] = 'DID set! You can now verify the handle on the Bluesky app.' end redirect "/settings/#{@site.username}#bluesky" diff --git a/models/site.rb b/models/site.rb index 7aa4ac6e..c3f2a516 100644 --- a/models/site.rb +++ b/models/site.rb @@ -1777,7 +1777,6 @@ class Site < Sequel::Model files.each do |file| existing_size = 0 - site_file = site_files_dataset.where(path: scrubbed_path(file[:filename])).first if site_file diff --git a/tests/acceptance/settings/site_tests.rb b/tests/acceptance/settings/site_tests.rb index 370ceee1..362bd3ea 100644 --- a/tests/acceptance/settings/site_tests.rb +++ b/tests/acceptance/settings/site_tests.rb @@ -197,4 +197,33 @@ describe 'site/settings' do _(page.body).must_match /You cannot delete the parent site without deleting the children sites first/i end end + + describe 'bluesky' do + it 'should set did verification file' do + Capybara.reset_sessions! + @site = Fabricate :site + page.set_rack_session id: @site.id + visit "/settings/#{@site.username}#bluesky" + did = 'did:plc:testexampletest' + fill_in 'did', with: did + click_button 'Update DID' + _(body).must_include 'DID set' + path = '.well-known/atproto-did' + _(@site.site_files_dataset.where(path: path).count).must_equal 1 + _(File.read(@site.files_path(path))).must_equal did + end + + it 'fails with weirdness' do + Capybara.reset_sessions! + @site = Fabricate :site + page.set_rack_session id: @site.id + visit "/settings/#{@site.username}#bluesky" + fill_in 'did', with: 'DIJEEDIJSFDSJNFLKJJFN' + click_button 'Update DID' + _(body).must_include 'DID was invalid' + fill_in 'did', with: 'did:plc:'+('a'*50) + click_button 'Update DID' + _(body).must_include 'DID provided was too long' + end + end end \ No newline at end of file diff --git a/views/settings/site.erb b/views/settings/site.erb index c5dd0753..178e0dfa 100644 --- a/views/settings/site.erb +++ b/views/settings/site.erb @@ -35,10 +35,7 @@
  • 18+
  • <% end %> - <% if @site.domain.empty? %> -
  • Bluesky
  • - <% end %> - +
  • Bluesky
  • Delete
  • diff --git a/views/settings/site/bluesky.erb b/views/settings/site/bluesky.erb index 6b24f254..15cbb625 100644 --- a/views/settings/site/bluesky.erb +++ b/views/settings/site/bluesky.erb @@ -16,18 +16,11 @@ Select No DNS Panel

    -

    - Back on Neocities, create a new file on your site named: .well-known/atproto-did -

    +

    Paste the DID here:

    -

    - Paste the DID provided to the file you created, click save, and then click "Verify Text File" on the Bluesky app. -

    - \ No newline at end of file + + \ No newline at end of file