class Admin::UsersController < Admin::BaseController before_action :authorize_admin before_action :set_user, only: [ :show, :edit, :update, :destroy ] def index @users = User.all.order(:name) end def show end def new @user = User.new end def edit @available_roles = Role.all end def create @user = User.new(user_params) if @user.save update_user_roles redirect_to admin_users_path, notice: "User was successfully created." else render :new, status: :unprocessable_entity end end def update if @user.update(user_params) update_user_roles redirect_to admin_users_path, notice: "User was successfully updated." else @available_roles = Role.all render :edit, status: :unprocessable_entity end end def destroy @user.destroy redirect_to admin_users_path, notice: "User was successfully deleted." end private def set_user @user = User.find(params[:id]) end def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation, :telegram_username, :languages_from, :languages_to) end def update_user_roles # Clear existing roles @user.roles.clear # Add selected roles if params[:user][:role_ids].present? params[:user][:role_ids].each do |role_id| next if role_id.blank? role = Role.find(role_id) @user.roles << role end end end def authorize_admin unless current_user&.has_permission?("manage_users") redirect_to root_path, alert: "You are not authorized to access this section." end end end