aboutsummaryrefslogtreecommitdiff
path: root/app/jobs/ensure_agent_job.rb
diff options
context:
space:
mode:
authorhellekin <hellekin@cepheide.org>2021-02-02 23:18:27 +0100
committerhellekin <hellekin@cepheide.org>2021-02-02 23:25:57 +0100
commit7f880e3ab041584f77daf098e585bc3c4a08a38a (patch)
tree31bb92a7e60027df4af30153a6781b2f11cf6986 /app/jobs/ensure_agent_job.rb
parentb5739232a535f89b48b54ee52ea7d9bb59f8a46f (diff)
downloadincommon-map-7f880e3ab041584f77daf098e585bc3c4a08a38a.tar.gz
[FIX] Account for users without an avatar or group
1. Ensure new users belong to an Agent Users may come without the correct group information, leading to a situation where they have no Agent assigned to them. The application cannot handle this, so we ensure new users are at least associated to the new Anonymous Agent. 2. Introduce a default avatar Users coming without an avatar would see a broken view. Now they're assigned a default avatar, which shows the IN COMMON icon logo instead.
Diffstat (limited to 'app/jobs/ensure_agent_job.rb')
-rw-r--r--app/jobs/ensure_agent_job.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/app/jobs/ensure_agent_job.rb b/app/jobs/ensure_agent_job.rb
new file mode 100644
index 0000000..c754fc0
--- /dev/null
+++ b/app/jobs/ensure_agent_job.rb
@@ -0,0 +1,15 @@
+class EnsureAgentJob < ApplicationJob
+ queue_as :default
+
+ include AgentsHelper
+
+ def perform(user, groups)
+ # Ensure the logged in user has a current agent
+ # In order to do this, we first check the existing agents against the user's
+ # groups. If none match, we assign the user to the default Anonymous agent.
+ existing_agents = Agent.find_by(name: groups)
+ if existing_agents.nil?
+ user.agents << default_agent unless user.agents.include? default_agent
+ end
+ end
+end