IT61/it61-rails

View on GitHub
app/controllers/users/profile_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Users
  class ProfileController < ApplicationController
    before_action :authenticate_user!, except: [ :sign_in ]
    before_action :set_user, only: [ :profile, :settings, :settings_update, :edit ]

    authorize_resource class: User, except: [ :sign_in, :sign_up_complete ]

    def sign_in; end

    def sign_up_complete
      redirect_to new_session_path if current_user.nil?
    end

    def profile
      # TODO: Too many queries to db (vitaly)
      @events = @user.owner_of_events
      render "users/show"
    end

    def settings; end

    # rubocop:disable Metrics/AbcSize
    def settings_update
      if current_user.update(subscribe_params)
        flash[:success] = t("flashes.profile_settings_saved")
        redirect_to profile_settings_path
      else
        if current_user.errors.messages[:phone]
          current_user.sms_reminders = false
          current_user.save!
          flash.now[:error] = t("flashes.add_phone_for_sms_reminders")
        else
          flash.now[:error] = t("flashes.error_during_save_settings")
        end
        render "settings"
      end
    end

    def edit
      render "users/edit"
    end

    def update; end

    private

    def set_user
      @user = current_user
    end

    def subscribe_params
      params.require(:user).permit(:email_reminders, :sms_reminders, :is_social_profiles_hidden)
    end
  end
end