]> git.openstreetmap.org Git - rails.git/blob - app/controllers/follows_controller.rb
Merge pull request #5932 from tomhughes/frozen-strings
[rails.git] / app / controllers / follows_controller.rb
1 # frozen_string_literal: true
2
3 class FollowsController < ApplicationController
4   include UserMethods
5
6   layout :site_layout
7
8   before_action :authorize_web
9   before_action :set_locale
10   before_action :check_database_readable
11
12   authorize_resource
13
14   before_action :check_database_writable
15   before_action :lookup_user
16
17   def show
18     @already_follows = current_user.follows?(@user)
19   end
20
21   def create
22     follow = Follow.new
23     follow.follower = current_user
24     follow.following = @user
25     if current_user.follows?(@user)
26       flash[:warning] = t ".already_followed", :name => @user.display_name
27     elsif current_user.follows.where(:created_at => (Time.now.utc - 1.hour)..).count >= current_user.max_follows_per_hour
28       flash[:error] = t ".limit_exceeded"
29     elsif follow.save
30       flash[:notice] = t ".success", :name => @user.display_name
31       UserMailer.follow_notification(follow).deliver_later
32     else
33       follow.add_error(t(".failed", :name => @user.display_name))
34     end
35
36     referer = safe_referer(params[:referer]) if params[:referer]
37
38     redirect_to referer || user_path
39   end
40
41   def destroy
42     if current_user.follows?(@user)
43       Follow.where(:follower => current_user, :following => @user).delete_all
44       flash[:notice] = t ".success", :name => @user.display_name
45     else
46       flash[:error] = t ".not_followed", :name => @user.display_name
47     end
48
49     referer = safe_referer(params[:referer]) if params[:referer]
50
51     redirect_to referer || user_path
52   end
53 end