diff --git a/app/controllers/admin/hosts_controller.rb b/app/controllers/admin/hosts_controller.rb index 70f45ff..64bb9bf 100644 --- a/app/controllers/admin/hosts_controller.rb +++ b/app/controllers/admin/hosts_controller.rb @@ -1,67 +1,70 @@ class Admin::HostsController < Admin::BaseController before_action :fetch_host, only: [:verify, :reject, :set_quota] # GET /admin/hosts/unverified def unverified @hosts = Host.unverified end # GET /admin/hosts/pending def pending @hosts = Host.where(verified: true).not_baculized end # GET /admin/hosts/rejected def rejected @hosts = RejectedHost.order(created_at: :desc) end # POST /admin/hosts/1/verify def verify - @host.verify(current_user.id) + if @host.verify(current_user.id) + UserMailer.notify_admin_for_verification(current_user, @host.fqdn).deliver + end + redirect_to unverified_admin_hosts_path end # POST /admin/hosts/1/reject def reject msg = 'You need to provide a reason' if params[:reason].blank? msg = 'Host is already verified' if @host.verified? if msg.blank? if @host.reject(current_user.id, params[:reason]) flash[:success] = 'Client rejected' else flash[:error] = 'Something went wrong' end else flash[:error] = msg end redirect_to unverified_admin_hosts_path end # PUT /admin/hosts/1/set_quota def set_quota @host.quota = case params[:unit] when 'MB' params[:quota].to_i * ConfigurationSetting::MEGA_BYTES when 'GB' params[:quota].to_i * ConfigurationSetting::GIGA_BYTES when 'TB' params[:quota].to_i * ConfigurationSetting::TERA_BYTES end if @host.save flash[:success] = 'Changes saved' else flash[:error] = 'Changes not saved' end redirect_to admin_client_path(@host.client) end private def fetch_host @host = Host.find(params[:id]) end end diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index 2d828dc..a67fa27 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -1,48 +1,59 @@ class UserMailer < ActionMailer::Base default from: Archiving.settings[:default_sender] # Notifies the host's owners that the host has been verified by an admin # and is now ready to be configured # # @param user_emails[Array] the owners' emails # @param host[String] the host's FQDN def notify_for_verification(user_emails, host) @host = host s = "[Archiving] Host #{host.name} verification" mail(to: user_emails, subject: s) end # Notifies the host's owners that the host has been rejected by an admin # # @param user_emails[Array] the ownerss emails # @param host[String] the host's FQDN # @param reason[String] the rejection reason def notify_for_rejection(user_emails, host, reason) @host = host @reason = reason s = "[Archiving] Host #{host.name} rejection" mail(to: user_emails, subject: s) end # Notifies the user that another user has requested that he should be able to # manage the given client's backups # # @param email[String] the user's email # @param invitation[Invitation] the target host def notify_for_invitation(email, invitation) @invitation = invitation subject = "[Archiving] Invitation to manage #{@invitation.host.name}'s backups" mail(to: email, subject: subject) end # Notifies admins about a new host that needs verification # # @param user[User] the user that created the host # @param host[String] the host's FQDN def notify_admin(user, host) admin_emails = User.admin.where(enabled: true).pluck(:email) @user = user @host = host mail(to: admin_emails, subject: 'New host pending verification') end + + # Notifies admins about a host that was verified + # + # @param user[User] the admin that verified the host + # @param host[String] the host's FQDN + def notify_admin_for_verification(user, host) + admin_emails = User.admin.where(enabled: true).pluck(:email) + @user = user + @host = host + mail(to: admin_emails, subject: 'New host verification') + end end diff --git a/app/views/user_mailer/notify_admin_for_verification.text.erb b/app/views/user_mailer/notify_admin_for_verification.text.erb new file mode 100644 index 0000000..c368ab4 --- /dev/null +++ b/app/views/user_mailer/notify_admin_for_verification.text.erb @@ -0,0 +1,7 @@ +New Client was approved by an admin. + +admin: <%= @user.username %> +client: <%= @host %> + +--------- +Archiving