diff --git a/app/settings.rb b/app/settings.rb index 27b8b6cd..a92c9358 100644 --- a/app/settings.rb +++ b/app/settings.rb @@ -20,6 +20,9 @@ get '/settings/:username/?' do |username| pass if Site.select(:id).where(username: username).first.nil? 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 @@ -174,6 +177,24 @@ post '/settings/:username/custom_domain' do end 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)]+)$/) + 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.' + end + + redirect "/settings/#{@site.username}#bluesky" +end + post '/settings/:username/generate_api_key' do require_login require_ownership_for_settings diff --git a/views/settings/site.erb b/views/settings/site.erb index bf34f3ae..09b732d9 100644 --- a/views/settings/site.erb +++ b/views/settings/site.erb @@ -26,15 +26,19 @@
+ You can now verify control of your site on Neocities to create a handle on Bluesky. +
+ ++ Bluesky App "Settings" "Change my handle" "I have my own domain" +
+ ++ Domain: @<%= @site.username %>.neocities.org +
+ ++TXT value: +
+ + \ No newline at end of file