82 lines
1.8 KiB
Ruby
82 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Admin
|
|
class UsersController < BaseController
|
|
before_action :set_user, only: %i[show edit update destroy]
|
|
|
|
def index
|
|
@users = apply_sorting(User.all, default: "username")
|
|
|
|
@breadcrumbs = [
|
|
{ label: "Users" }
|
|
]
|
|
end
|
|
|
|
def show
|
|
@breadcrumbs = [
|
|
{ label: "Users", path: admin_users_path },
|
|
{ label: @user.username }
|
|
]
|
|
end
|
|
|
|
def new
|
|
@user = User.new
|
|
|
|
@breadcrumbs = [
|
|
{ label: "Users", path: admin_users_path },
|
|
{ label: "New User" }
|
|
]
|
|
end
|
|
|
|
def edit
|
|
@breadcrumbs = [
|
|
{ label: "Users", path: admin_users_path },
|
|
{ label: @user.username, path: admin_user_path(@user) },
|
|
{ label: "Edit" }
|
|
]
|
|
end
|
|
|
|
def create
|
|
@user = User.new(user_params)
|
|
|
|
if @user.save
|
|
redirect_to admin_user_path(@user), notice: t(".notice")
|
|
else
|
|
@breadcrumbs = [
|
|
{ label: "Users", path: admin_users_path },
|
|
{ label: "New User" }
|
|
]
|
|
render :new, status: :unprocessable_content
|
|
end
|
|
end
|
|
|
|
def update
|
|
if @user.update(user_params)
|
|
redirect_to admin_user_path(@user), notice: t(".notice")
|
|
else
|
|
@breadcrumbs = [
|
|
{ label: "Users", path: admin_users_path },
|
|
{ label: @user.username, path: admin_user_path(@user) },
|
|
{ label: "Edit" }
|
|
]
|
|
render :edit, status: :unprocessable_content
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
@user.destroy
|
|
redirect_to admin_users_path, notice: t(".notice")
|
|
end
|
|
|
|
private
|
|
|
|
def set_user
|
|
@user = User.find(params.expect(:id))
|
|
end
|
|
|
|
def user_params
|
|
params.expect(user: %i[username email type admin classroom_id password password_confirmation])
|
|
end
|
|
end
|
|
end
|