app/controllers/casein/admin_users_controller.rb in casein-5.3.2.0 vs app/controllers/casein/admin_users_controller.rb in casein-5.4.0.0

- old
+ new

@@ -1,124 +1,123 @@ +# frozen_string_literal: true + require 'securerandom' module Casein class AdminUsersController < Casein::CaseinController + before_action :needs_admin, except: %i[show destroy update update_password] + before_action :needs_admin_or_current_user, only: %i[show destroy update update_password] - before_action :needs_admin, except: [:show, :destroy, :update, :update_password] - before_action :needs_admin_or_current_user, only: [:show, :destroy, :update, :update_password] - def index - @casein_page_title = "Users" + @casein_page_title = 'Users' @users = Casein::AdminUser.order(sort_order(:login)).paginate page: params[:page] end - + def new - @casein_page_title = "Add a new user" - @casein_admin_user = Casein::AdminUser.new - @casein_admin_user.time_zone = Rails.configuration.time_zone + @casein_page_title = 'Add a new user' + @casein_admin_user = Casein::AdminUser.new + @casein_admin_user.time_zone = Rails.configuration.time_zone end - - def create + def create generate_random_password if params[:generate_random_password] @casein_admin_user = Casein::AdminUser.new casein_admin_user_params - + if @casein_admin_user.save - flash[:notice] = "An email has been sent to " + @casein_admin_user.name + " with the new account details" + flash[:notice] = "An email has been sent to #{@casein_admin_user.name} with the new account details" redirect_to casein_admin_users_path else - flash.now[:warning] = "There were problems when trying to create a new user" + flash.now[:warning] = 'There were problems when trying to create a new user' render action: :new end end - + def show - @casein_admin_user = Casein::AdminUser.find params[:id] - @casein_page_title = @casein_admin_user.name + " > View user" + @casein_admin_user = Casein::AdminUser.find params[:id] + @casein_page_title = @casein_admin_user.name + ' > View user' end - + def update @casein_admin_user = Casein::AdminUser.find params[:id] - @casein_page_title = @casein_admin_user.name + " > Update user" + @casein_page_title = "#{@casein_admin_user.name} > Update user" if @casein_admin_user.update_attributes casein_admin_user_params - flash[:notice] = @casein_admin_user.name + " has been updated" + flash[:notice] = "#{@casein_admin_user.name} has been updated" else - flash.now[:warning] = "There were problems when trying to update this user" + flash.now[:warning] = 'There were problems when trying to update this user' render action: :show return end - + if @session_user.is_admin? redirect_to casein_admin_users_path else redirect_to controller: :casein, action: :index end end - + def update_password @casein_admin_user = Casein::AdminUser.find params[:id] - @casein_page_title = @casein_admin_user.name + " > Update password" - + @casein_page_title = "#{@casein_admin_user.name} > Update password" + if @casein_admin_user.valid_password? params[:form_current_password] if params[:casein_admin_user][:password].blank? && params[:casein_admin_user][:password_confirmation].blank? - flash[:warning] = "New password cannot be blank" + flash[:warning] = 'New password cannot be blank' elsif @casein_admin_user.update_attributes casein_admin_user_params - flash[:notice] = "Your password has been changed" + flash[:notice] = 'Your password has been changed' else - flash[:warning] = "There were problems when trying to change your password" + flash[:warning] = 'There were problems when trying to change your password' end else - flash[:warning] = "The current password is incorrect" + flash[:warning] = 'The current password is incorrect' end - + redirect_to action: :show end - + def reset_password @casein_admin_user = Casein::AdminUser.find params[:id] - @casein_page_title = @casein_admin_user.name + " > Reset password" - + @casein_page_title = "#{@casein_admin_user.name} > Reset password" + if params[:generate_random_password].blank? && params[:casein_admin_user][:password].blank? && params[:casein_admin_user][:password_confirmation].blank? - flash[:warning] = "New password cannot be blank" + flash[:warning] = 'New password cannot be blank' else generate_random_password if params[:generate_random_password] - @casein_admin_user.notify_of_new_password = true unless (@casein_admin_user.id == @session_user.id && params[:generate_random_password].blank?) + @casein_admin_user.notify_of_new_password = true unless @casein_admin_user.id == @session_user.id && params[:generate_random_password].blank? if @casein_admin_user.update_attributes casein_admin_user_params - unless @casein_admin_user.notify_of_new_password - flash[:notice] = "Your password has been reset" - else - flash[:notice] = "Password has been reset and " + @casein_admin_user.name + " has been notified by email" + if @casein_admin_user.notify_of_new_password + flash[:notice] = "Password has been reset and #{@casein_admin_user.name} has been notified by email" + else + flash[:notice] = 'Your password has been reset' end else flash[:warning] = "There were problems when trying to reset this user's password" end end redirect_to action: :show end - + def destroy user = Casein::AdminUser.find params[:id] if user.is_admin? == false || Casein::AdminUser.has_more_than_one_admin user.destroy - flash[:notice] = user.name + " has been deleted" + flash[:notice] = "#{user.name} has been deleted" end redirect_to casein_admin_users_path end private - def generate_random_password - random_password = random_string = SecureRandom.hex - params[:casein_admin_user] = Hash.new if params[:casein_admin_user].blank? - params[:casein_admin_user].merge! ({ password: random_password, password_confirmation: random_password }) - end + def generate_random_password + random_password = random_string = SecureRandom.hex + params[:casein_admin_user] = {} if params[:casein_admin_user].blank? + params[:casein_admin_user].merge! ({ password: random_password, password_confirmation: random_password }) + end - def casein_admin_user_params - params.require(:casein_admin_user).permit(:login, :name, :email, :time_zone, :access_level, :password, :password_confirmation) - end - + def casein_admin_user_params + params.require(:casein_admin_user).permit(:login, :name, :email, :time_zone, :access_level, :password, :password_confirmation) + end end -end \ No newline at end of file +end