forked from External/greenlight
		
	GRN2-xx: Email and admin fix (#515)
* Email and admin fix * Redirected super_admins to the admins page * Small fix * Update rooms_controller.rb
This commit is contained in:
		
				
					committed by
					
						
						Jesus Federico
					
				
			
			
				
	
			
			
			
						parent
						
							63ada8b3db
						
					
				
				
					commit
					75bde6a42d
				
			@@ -17,7 +17,7 @@
 | 
			
		||||
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
class AccountActivationsController < ApplicationController
 | 
			
		||||
  include Verifier
 | 
			
		||||
  include Emailer
 | 
			
		||||
 | 
			
		||||
  before_action :ensure_unauthenticated
 | 
			
		||||
  before_action :find_user
 | 
			
		||||
@@ -46,7 +46,7 @@ class AccountActivationsController < ApplicationController
 | 
			
		||||
      flash[:alert] = I18n.t("verify.already_verified")
 | 
			
		||||
    else
 | 
			
		||||
      begin
 | 
			
		||||
        @user.send_activation_email(user_verification_link)
 | 
			
		||||
        send_activation_email(@user)
 | 
			
		||||
      rescue => e
 | 
			
		||||
        logger.error "Error in email delivery: #{e}"
 | 
			
		||||
        flash[:alert] = I18n.t(params[:message], default: I18n.t("delivery_error"))
 | 
			
		||||
 
 | 
			
		||||
@@ -16,11 +16,27 @@
 | 
			
		||||
# You should have received a copy of the GNU Lesser General Public License along
 | 
			
		||||
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
module Verifier
 | 
			
		||||
module Emailer
 | 
			
		||||
  extend ActiveSupport::Concern
 | 
			
		||||
 | 
			
		||||
  # Sends account activation email.
 | 
			
		||||
  def send_activation_email(user)
 | 
			
		||||
    @user = user
 | 
			
		||||
    UserMailer.verify_email(@user, user_verification_link, logo_image, user_color).deliver
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Sends password reset email.
 | 
			
		||||
  def send_password_reset_email(user)
 | 
			
		||||
    @user = user
 | 
			
		||||
    UserMailer.password_reset(@user, reset_link, logo_image, user_color).deliver_now
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Returns the link the user needs to click to verify their account
 | 
			
		||||
  def user_verification_link
 | 
			
		||||
    request.base_url + edit_account_activation_path(token: @user.activation_token, email: @user.email)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def reset_link
 | 
			
		||||
    request.base_url + edit_password_reset_path(@user.reset_token, email: @user.email)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
@@ -17,6 +17,8 @@
 | 
			
		||||
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
class PasswordResetsController < ApplicationController
 | 
			
		||||
  include Emailer
 | 
			
		||||
 | 
			
		||||
  before_action :disable_password_reset, unless: -> { Rails.configuration.enable_email_verification }
 | 
			
		||||
  before_action :find_user,   only: [:edit, :update]
 | 
			
		||||
  before_action :valid_user, only: [:edit, :update]
 | 
			
		||||
@@ -29,7 +31,7 @@ class PasswordResetsController < ApplicationController
 | 
			
		||||
    @user = User.find_by(email: params[:password_reset][:email].downcase)
 | 
			
		||||
    if @user
 | 
			
		||||
      @user.create_reset_digest
 | 
			
		||||
      @user.send_password_reset_email(reset_link)
 | 
			
		||||
      send_password_reset_email(@user)
 | 
			
		||||
      flash[:success] = I18n.t("email_sent", email_type: t("reset_password.subtitle"))
 | 
			
		||||
      redirect_to root_path
 | 
			
		||||
    else
 | 
			
		||||
@@ -78,10 +80,6 @@ class PasswordResetsController < ApplicationController
 | 
			
		||||
    redirect_to new_password_reset_url, alert: I18n.t("expired_reset_token") if current_user.password_reset_expired?
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def reset_link
 | 
			
		||||
    request.base_url + edit_password_reset_path(@user.reset_token, email: @user.email)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Confirms a valid user.
 | 
			
		||||
  def valid_user
 | 
			
		||||
    unless current_user.authenticated?(:reset, params[:id])
 | 
			
		||||
 
 | 
			
		||||
@@ -26,6 +26,7 @@ class RoomsController < ApplicationController
 | 
			
		||||
  before_action :verify_room_ownership, except: [:create, :show, :join, :logout]
 | 
			
		||||
  before_action :verify_room_owner_verified, only: [:show, :join],
 | 
			
		||||
                unless: -> { !Rails.configuration.enable_email_verification }
 | 
			
		||||
  before_action :verify_user_not_admin, only: [:show]
 | 
			
		||||
 | 
			
		||||
  # POST /
 | 
			
		||||
  def create
 | 
			
		||||
@@ -244,11 +245,15 @@ class RoomsController < ApplicationController
 | 
			
		||||
    unless @room.owner.activated?
 | 
			
		||||
      flash[:alert] = t("room.unavailable")
 | 
			
		||||
 | 
			
		||||
      if current_user
 | 
			
		||||
      if current_user && !@room.owned_by?(current_user)
 | 
			
		||||
        redirect_to current_user.main_room
 | 
			
		||||
      else
 | 
			
		||||
        redirect_to root_path
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def verify_user_not_admin
 | 
			
		||||
    redirect_to admins_path if current_user && current_user&.has_role?(:super_admin)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@
 | 
			
		||||
 | 
			
		||||
class UsersController < ApplicationController
 | 
			
		||||
  include RecordingsHelper
 | 
			
		||||
  include Verifier
 | 
			
		||||
  include Emailer
 | 
			
		||||
 | 
			
		||||
  before_action :find_user, only: [:edit, :update, :destroy]
 | 
			
		||||
  before_action :ensure_unauthenticated, only: [:new, :create]
 | 
			
		||||
@@ -46,7 +46,7 @@ class UsersController < ApplicationController
 | 
			
		||||
 | 
			
		||||
    # Start email verification and redirect to root.
 | 
			
		||||
    begin
 | 
			
		||||
      @user.send_activation_email(user_verification_link)
 | 
			
		||||
      send_activation_email(@user)
 | 
			
		||||
    rescue => e
 | 
			
		||||
      logger.error "Error in email delivery: #{e}"
 | 
			
		||||
      flash[:alert] = I18n.t(params[:message], default: I18n.t("delivery_error"))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user