openpolitics/groupthink

View on GitHub
app/controllers/users_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

#
# Displays lists of users and individual user profile pages.
#
class UsersController < ApplicationController
  before_action :get_user, except: [:index]
  before_action :authorise, only: [:edit, :update]

  def index
    @authors = User.where(author: true)
    @others = User.where(author: false)
  end

  def show
    # Get proposed list
    @proposed = @user.proposed
    @proposed_count = @proposed.count
    @proposed = @proposed.page params[:proposed_page]
    # Get voted list
    @voted = @user.voted_on
    @voted_count = @voted.count
    @voted = @voted.page params[:voted_page]
    # Get list not yet voted on
    @not_voted = @user.not_voted_on
  end

  def edit
  end

  def update
    @user.update!(user_params)
    redirect_to edit_user_path(@user)
  end

private
  def get_user
    @user = User.find_by(login: params[:id])
    raise ActiveRecord::RecordNotFound if @user.nil?
  end

  def authorise
    if @user != current_user
      redirect_to @user
    end
  end

  def user_params
    params.require(:user).permit(:email, :notify_new)
  end
end