diff --git a/.env.example b/.env.example index 48b0fec..5550c06 100644 --- a/.env.example +++ b/.env.example @@ -1,10 +1,16 @@ LDAP_HOST=localhost LDAP_PORT=389 LDAP_ADMIN_PASSWORD=passthebutter -LDAP_SUFFIX="dc=kosmos,dc=org" +LDAP_SUFFIX='dc=kosmos,dc=org' WEBHOOKS_ALLOWED_IPS='10.1.1.163' +DISCOURSE_PUBLIC_URL='https://community.kosmos.org' +GITEA_PUBLIC_URL='https://gitea.kosmos.org' +MASTODON_PUBLIC_URL='https://kosmos.social' +MEDIAWIKI_PUBLIC_URL='https://wiki.kosmos.org' + +EJABBERD_ADMIN_URL='https://xmpp.kosmos.org/admin' EJABBERD_API_URL='https://xmpp.kosmos.org/api' BTCPAY_API_URL='http://localhost:23001/api/v1' @@ -18,3 +24,4 @@ LNDHUB_PG_PORT=5432 LNDHUB_PG_DATABASE=lndhub LNDHUB_PG_USERNAME=lndhub LNDHUB_PG_PASSWORD='' + diff --git a/app/components/form_elements/toggle_component.html.erb b/app/components/form_elements/toggle_component.html.erb new file mode 100644 index 0000000..fabb81c --- /dev/null +++ b/app/components/form_elements/toggle_component.html.erb @@ -0,0 +1,12 @@ + diff --git a/app/components/form_elements/toggle_component.rb b/app/components/form_elements/toggle_component.rb new file mode 100644 index 0000000..a5d0400 --- /dev/null +++ b/app/components/form_elements/toggle_component.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module FormElements + class ToggleComponent < ViewComponent::Base + def initialize(enabled:) + @enabled = !!enabled + end + end +end diff --git a/app/models/setting.rb b/app/models/setting.rb index 0bca086..27f43a6 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -10,6 +10,56 @@ class Setting < RailsSettings::Base account accounts donations mail webmaster support ] + # + # Discourse + # + + field :discourse_public_url, type: :string, + default: ENV["DISCOURSE_PUBLIC_URL"].presence + + field :discourse_enabled, type: :boolean, + default: (ENV["DISCOURSE_PUBLIC_URL"].present?.to_s || false) + + # + # ejabberd + # + + field :ejabberd_enabled, type: :boolean, + default: (ENV["EJABBERD_API_URL"].present?.to_s || false) + + field :ejabberd_admin_url, type: :string, + default: ENV["EJABBERD_ADMIN_URL"].presence + + # + # Gitea + # + + field :gitea_public_url, type: :string, + default: ENV["GITEA_PUBLIC_URL"].presence + + field :gitea_enabled, type: :boolean, + default: (ENV["GITEA_PUBLIC_URL"].present?.to_s || false) + + # + # Mastodon + # + + field :mastodon_public_url, type: :string, + default: ENV["MASTODON_PUBLIC_URL"].presence + + field :mastodon_enabled, type: :boolean, + default: (ENV["MASTODON_PUBLIC_URL"].present?.to_s || false) + + # + # MediaWiki + # + + field :mediawiki_public_url, type: :string, + default: ENV["MEDIAWIKI_PUBLIC_URL"].presence + + field :mediawiki_enabled, type: :boolean, + default: (ENV["MEDIAWIKI_PUBLIC_URL"].present?.to_s || false) + # # Lightning Network # diff --git a/app/models/user.rb b/app/models/user.rb index 31599c4..5734369 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -53,7 +53,7 @@ class User < ApplicationRecord end def devise_after_confirmation - enable_service %w[discourse gitea wiki xmpp] + enable_service %w[discourse gitea mediawiki ejabberd] end def reset_password(new_password, new_password_confirmation) diff --git a/app/views/admin/users/show.html.erb b/app/views/admin/users/show.html.erb index 4679e6f..19da38f 100644 --- a/app/views/admin/users/show.html.erb +++ b/app/views/admin/users/show.html.erb @@ -65,28 +65,72 @@

Services

- +
+ + + + + + + + <% if Setting.discourse_enabled %> - + + + <% end %> + <% if Setting.gitea_enabled %> - + + + <% end %> + <% if Setting.mastodon_enabled %> - + + + <% end %> + <% if Setting.mediawiki_enabled %> - - + + + + <% end %> + <% if Setting.ejabberd_enabled %> - - + + + + <% end %>
NameEnabled
Discourse<%= check_box_tag 'service_discourse', 'enabled', @services_enabled.include?("discourse"), disabled: true %> + <%= render FormElements::ToggleComponent.new(enabled: @services_enabled.include?("discourse")) %> + + <%= link_to "Open profile", "#{Setting.discourse_public_url}/u/#{@user.cn}/summary", class: "btn-sm btn-gray" %> +
Gitea<%= check_box_tag 'service_gitea', 'enabled', @services_enabled.include?("gitea"), disabled: true %> + <%= render FormElements::ToggleComponent.new(enabled: @services_enabled.include?("gitea")) %> + + <%= link_to "Open profile", "#{Setting.gitea_public_url}/#{@user.cn}", class: "btn-sm btn-gray" %> +
Mastodon<%= check_box_tag 'service_mastodon', 'enabled', @services_enabled.include?("mastodon"), disabled: true %> + <%= render FormElements::ToggleComponent.new(enabled: @services_enabled.include?("mastodon")) %> + + <%= link_to "Open profile", "#{Setting.mastodon_public_url}/@#{@user.cn}", class: "btn-sm btn-gray" %> +
Wiki<%= check_box_tag 'service_wiki', 'enabled', @services_enabled.include?("wiki"), disabled: true %>MediaWiki + <%= render FormElements::ToggleComponent.new(enabled: @services_enabled.include?("mediawiki")) %> + + <%= link_to "Open profile", "#{Setting.mediawiki_public_url}/Special:Contributions/#{@user.cn}", class: "btn-sm btn-gray" %> +
XMPP<%= check_box_tag 'service_xmpp', 'enabled', @services_enabled.include?("xmpp"), disabled: true %>XMPP (ejabberd) + <%= render FormElements::ToggleComponent.new(enabled: @services_enabled.include?("ejabberd")) %> + + <% if Setting.ejabberd_admin_url.present? %> + <%= link_to "Open profile", "#{Setting.ejabberd_admin_url}/server/#{@user.ou}/user/#{@user.cn}/", class: "btn-sm btn-gray" %> + <% end %> +