]> git.openstreetmap.org Git - rails.git/blob - app/controllers/users/statuses_controller.rb
Add UI for admins to suspend users
[rails.git] / app / controllers / users / statuses_controller.rb
1 # frozen_string_literal: true
2
3 module Users
4   class StatusesController < ApplicationController
5     layout :site_layout
6
7     before_action :authorize_web
8     before_action :set_locale
9     before_action :check_database_readable
10
11     authorize_resource :class => :user_status
12
13     before_action :lookup_user_by_name
14
15     ##
16     # sets a user's status
17     def update
18       @user.activate! if params[:event] == "activate"
19       @user.confirm! if params[:event] == "confirm"
20       @user.unconfirm! if params[:event] == "unconfirm"
21       @user.hide! if params[:event] == "hide"
22       @user.unhide! if params[:event] == "unhide"
23       @user.unsuspend! if params[:event] == "unsuspend"
24       @user.suspend! if params[:event] == "suspend"
25       @user.soft_destroy! if params[:event] == "soft_destroy" # destroy a user, marking them as deleted and removing personal data
26       redirect_to user_path(params[:user_display_name])
27     end
28
29     private
30
31     ##
32     # ensure that there is a "user" instance variable
33     def lookup_user_by_name
34       @user = User.find_by!(:display_name => params[:user_display_name])
35     rescue ActiveRecord::RecordNotFound
36       redirect_to user_path(params[:user_display_name]) unless @user
37     end
38   end
39 end