-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathadmin.rb
More file actions
61 lines (51 loc) · 2.08 KB
/
admin.rb
File metadata and controls
61 lines (51 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# frozen_string_literal: true
require "decidim_app/k8s/manager"
require "decidim/core"
module DecidimApp
module K8s
module Commands
class Admin
def self.run(configuration, organization)
new(configuration, organization).run
end
def initialize(configuration, organization)
@configuration = configuration
@organization = organization
end
def run
mapped_attributes = Decidim::AccountForm.from_model(existing_admin)
.attributes_with_values
.except(:avatar)
form = Decidim::AccountForm.from_params(mapped_attributes.merge(admin_params))
.with_context(current_user: existing_admin,
current_organization: @organization)
Decidim::UpdateAccount.call(existing_admin, form) do
on(:ok) do
K8s::Manager.logger.info("Admin user #{form.nickname} updated")
end
on(:invalid) do
K8s::Manager.logger.info("Admin user #{form.nickname} could not be updated")
form.tap(&:valid?).errors.messages.each do |error|
K8s::Manager.logger.info(error)
end
raise "Admin user #{form.nickname} could not be updated"
end
end
existing_admin.reload
end
def existing_admin
@existing_admin ||= Decidim::User.find_by(email: @configuration[:email], organization: @organization).tap(&:skip_confirmation!)
end
def admin_params
@admin_params ||= {
password_confirmation: @configuration[:password],
tos_agreement: "1",
newsletter_notifications_at: existing_admin.confirmed_at || Time.zone.now,
admin_terms_accepted_at: existing_admin.confirmed_at || Time.zone.now,
confirmed_at: existing_admin.confirmed_at || Time.zone.now
}.merge(@configuration)
end
end
end
end
end