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 @@
  • Profile
  • Custom Domain
  • -
  • Change Site Name
  • +
  • Rename
  • Tipping
  • -
  • API Key
  • +
  • API
  • <% if @site.admin_nsfw != true %>
  • 18+
  • <% end %> + <% if @site.domain.empty? %> +
  • Bluesky
  • + <% end %> +
  • Delete
  • @@ -64,6 +68,10 @@
    <% end %> +
    + <%== erb :'settings/site/bluesky' %> +
    +
    <%== erb :'settings/site/delete' %>
    diff --git a/views/settings/site/bluesky.erb b/views/settings/site/bluesky.erb new file mode 100644 index 00000000..f066b39b --- /dev/null +++ b/views/settings/site/bluesky.erb @@ -0,0 +1,24 @@ +

    Bluesky Integration (beta)

    + +

    + 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: +

    + +
    + <%== csrf_token_input_html %> + +
    + +
    \ No newline at end of file