From f3f09d43e21f154a0e28d78b67614ba0ee4b3e04 Mon Sep 17 00:00:00 2001 From: fbocolowski Date: Fri, 12 Apr 2019 23:16:13 -0300 Subject: [PATCH] Allowed to create a trigger for all server at the same time. Removed data replication. --- app/controllers/password_reset_controller.rb | 21 ++++++++++++++ app/controllers/triggers_controller.rb | 9 +++++- app/models/report.rb | 6 ---- app/models/server.rb | 7 +---- app/models/session.rb | 8 +---- app/models/trigger.rb | 2 ++ app/views/triggers/edit.html.erb | 29 +++++++++++++++++++ app/views/triggers/new.html.erb | 12 ++++++-- config/locales/en.yml | 1 + ...20190412230612_disable_data_replication.js | 3 ++ 10 files changed, 76 insertions(+), 22 deletions(-) create mode 100755 app/controllers/password_reset_controller.rb create mode 100644 app/views/triggers/edit.html.erb create mode 100644 migrations/20190412230612_disable_data_replication.js diff --git a/app/controllers/password_reset_controller.rb b/app/controllers/password_reset_controller.rb new file mode 100755 index 0000000..065c47c --- /dev/null +++ b/app/controllers/password_reset_controller.rb @@ -0,0 +1,21 @@ +class PasswordResetController < ApplicationController + before_action :security_public + + def show + end + + def create + user = User.where(username: params[:username]).first rescue nil + if !user.nil? && user.servers.where(token: params[:token]).present? + if params[:new_password] == params[:confirm_password] + user.update(password: params[:new_password]) + start_session(user.id) and return + else + @alert = t(:passwords_do_not_match) + end + else + @alert = t(:username_token_not_found) + end + render 'show' + end +end diff --git a/app/controllers/triggers_controller.rb b/app/controllers/triggers_controller.rb index 5ee77e6..7070665 100755 --- a/app/controllers/triggers_controller.rb +++ b/app/controllers/triggers_controller.rb @@ -13,7 +13,14 @@ def new def create @trigger = @server.triggers.new(trigger_params) - if @trigger.save + if @trigger.validate + if params[:create_for_all] + @session.user.servers.each do |server| + server.triggers.create(trigger_params) + end + else + @trigger.save + end redirect_to server_triggers_path(@server) else @alert = @trigger.errors.full_messages.first diff --git a/app/models/report.rb b/app/models/report.rb index f3d27c5..40b5004 100755 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -16,14 +16,8 @@ class Report field :token, type: String field :username, type: String - before_create :replicate_data after_create :update_server - def replicate_data - self.token = self.server.token - self.username = self.server.user.username - end - def update_server if self.server.first_report.nil? self.server.first_report = self.created_at diff --git a/app/models/server.rb b/app/models/server.rb index df0d9b8..925699e 100755 --- a/app/models/server.rb +++ b/app/models/server.rb @@ -8,7 +8,6 @@ class Server field :token, type: String - field :username, type: String field :first_report, type: Time field :last_report, type: Time field :ip, type: String @@ -18,7 +17,7 @@ class Server field :ram_usage, type: Integer field :disk_usage, type: Integer - before_create :generate_token, :replicate_data + before_create :generate_token def last_report_minutes begin @@ -74,8 +73,4 @@ def generate_token break random if Server.where(token: random).count == 0 end end - - def replicate_data - self.username = self.user.username - end end diff --git a/app/models/session.rb b/app/models/session.rb index 52154d1..9b315b4 100755 --- a/app/models/session.rb +++ b/app/models/session.rb @@ -9,9 +9,7 @@ class Session field :user_agent, type: String field :active, type: Boolean, default: true - field :username, type: String - - before_create :generate_token, :replicate_data + before_create :generate_token private @@ -21,8 +19,4 @@ def generate_token break random if Server.where(token: random).count == 0 end end - - def replicate_data - self.username = self.user.username - end end diff --git a/app/models/trigger.rb b/app/models/trigger.rb index 781f52a..1138995 100755 --- a/app/models/trigger.rb +++ b/app/models/trigger.rb @@ -18,6 +18,8 @@ class Trigger validates :action, presence: true, inclusion: {in: ACTIONS} validates :url, presence: true + validates_uniqueness_of :server, scope: [:event, :criteria, :action, :url] + def name self.event.gsub('N', self.criteria.to_s) end diff --git a/app/views/triggers/edit.html.erb b/app/views/triggers/edit.html.erb new file mode 100644 index 0000000..dff4436 --- /dev/null +++ b/app/views/triggers/edit.html.erb @@ -0,0 +1,29 @@ +
+
+
+
+

<%= @server.hostname %> / <%= t(:new_trigger) %>

+ <%= form_for @trigger, url: server_trigger_path(@server, @trigger) do |f| %> +
+ + <%= f.select(:event, options_for_select(Trigger::EVENTS, selected: @trigger.event), {}, class: "form-control") %> +
+
+ + <%= f.number_field(:criteria, class: "form-control") %> +
+
+ + <%= f.select(:action, options_for_select(Trigger::ACTIONS, selected: @trigger.action), {}, class: "form-control") %> +
+
+ + <%= f.text_field(:url, class: "form-control") %> +
+
+ <%= f.submit(t(:submit), class: "btn btn-sm btn-primary") %> +
+ <% end %> +
+
+
\ No newline at end of file diff --git a/app/views/triggers/new.html.erb b/app/views/triggers/new.html.erb index 287689e..10e6b8d 100644 --- a/app/views/triggers/new.html.erb +++ b/app/views/triggers/new.html.erb @@ -6,7 +6,7 @@ <%= form_for @trigger, url: server_triggers_path(@server) do |f| %>
- <%= f.select(:event, options_for_select(Trigger::EVENTS), {}, class: "form-control") %> + <%= f.select(:event, options_for_select(Trigger::EVENTS, selected: @trigger.event), {}, class: "form-control") %>
@@ -14,12 +14,20 @@
- <%= f.select(:action, options_for_select(Trigger::ACTIONS), {}, class: "form-control") %> + <%= f.select(:action, options_for_select(Trigger::ACTIONS, selected: @trigger.action), {}, class: "form-control") %>
<%= f.text_field(:url, class: "form-control") %>
+
+ +
+
+
<%= f.submit(t(:submit), class: "btn btn-sm btn-primary") %>
diff --git a/config/locales/en.yml b/config/locales/en.yml index 283da61..bdea17c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -94,6 +94,7 @@ en: criteria: "Criteria (N)" url: "URL" send_test: "Send test" + create_for_all: "Create for all servers" # Alerts changes_saved: "Changes saved" diff --git a/migrations/20190412230612_disable_data_replication.js b/migrations/20190412230612_disable_data_replication.js new file mode 100644 index 0000000..ce985f4 --- /dev/null +++ b/migrations/20190412230612_disable_data_replication.js @@ -0,0 +1,3 @@ +db.sessions.updateMany({}, {$unset: {username: 1}}) +db.servers.updateMany({}, {$unset: {username: 1}}) +db.reports.updateMany({}, {$unset: {username: 1, token: 1}}) \ No newline at end of file