From 819ecf6ad8e3d8633c5507d8050ae7dc4d8c0693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Thu, 4 Apr 2024 13:27:52 +0300 Subject: [PATCH] Add `#service_enabled?` method to user model --- app/controllers/services/chat_controller.rb | 2 +- .../services/mastodon_controller.rb | 2 +- .../services/remotestorage_controller.rb | 2 +- app/jobs/xmpp_exchange_contacts_job.rb | 4 ++-- app/models/user.rb | 4 ++++ spec/models/user_spec.rb | 19 +++++++++++++++++++ 6 files changed, 28 insertions(+), 5 deletions(-) diff --git a/app/controllers/services/chat_controller.rb b/app/controllers/services/chat_controller.rb index dfc69e3..dda2be5 100644 --- a/app/controllers/services/chat_controller.rb +++ b/app/controllers/services/chat_controller.rb @@ -3,7 +3,7 @@ class Services::ChatController < Services::BaseController before_action :require_service_available def show - @service_enabled = current_user.services_enabled.include?(:xmpp) + @service_enabled = current_user.service_enabled?(:xmpp) end private diff --git a/app/controllers/services/mastodon_controller.rb b/app/controllers/services/mastodon_controller.rb index ddea323..7958b8b 100644 --- a/app/controllers/services/mastodon_controller.rb +++ b/app/controllers/services/mastodon_controller.rb @@ -3,7 +3,7 @@ class Services::MastodonController < Services::BaseController before_action :require_service_available def show - @service_enabled = current_user.services_enabled.include?(:mastodon) + @service_enabled = current_user.service_enabled?(:mastodon) end private diff --git a/app/controllers/services/remotestorage_controller.rb b/app/controllers/services/remotestorage_controller.rb index 632e5c7..15726d4 100644 --- a/app/controllers/services/remotestorage_controller.rb +++ b/app/controllers/services/remotestorage_controller.rb @@ -5,7 +5,7 @@ class Services::RemotestorageController < Services::BaseController # Dashboard def show - # unless current_user.services_enabled.include?(:remotestorage) + # unless current_user.service_enabled?(:remotestorage) # redirect_to service_remotestorage_info_path # end @rs_auths = current_user.remote_storage_authorizations diff --git a/app/jobs/xmpp_exchange_contacts_job.rb b/app/jobs/xmpp_exchange_contacts_job.rb index f1b20e0..1a9d67a 100644 --- a/app/jobs/xmpp_exchange_contacts_job.rb +++ b/app/jobs/xmpp_exchange_contacts_job.rb @@ -2,8 +2,8 @@ class XmppExchangeContactsJob < ApplicationJob queue_as :default def perform(inviter, invitee) - return unless inviter.services_enabled.include?("xmpp") && - invitee.services_enabled.include?("xmpp") && + return unless inviter.service_enabled?(:xmpp) && + invitee.service_enabled?(:xmpp) && inviter.preferences[:xmpp_exchange_contacts_with_invitees] ejabberd = EjabberdApiClient.new diff --git a/app/models/user.rb b/app/models/user.rb index f0609a6..735d7e0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -180,6 +180,10 @@ class User < ApplicationRecord ldap_entry[:services_enabled] || [] end + def service_enabled?(name) + services_enabled.map(&:to_sym).include?(name.to_sym) + end + def enable_service(service) current_services = services_enabled new_services = Array(service).map(&:to_s) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index b0d077e..1646d1c 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -80,6 +80,25 @@ RSpec.describe User, type: :model do end end + describe "#service_enabled?" do + before do + allow(user).to receive(:ldap_entry).and_return({ + uid: user.cn, ou: user.ou, mail: user.email, admin: nil, + services_enabled: ["gitea", "xmpp"] + }) + end + + it "returns true or false" do + expect(user.service_enabled?("gitea")).to be(true) + expect(user.service_enabled?("email")).to be(false) + end + + it "returns false when service is not enabled" do + expect(user.service_enabled?(:gitea)).to be(true) + expect(user.service_enabled?(:email)).to be(false) + end + end + describe "#enable_service" do before do allow(user).to receive(:ldap_entry).and_return({