From c2cf853792a7ff12ed05648c5b71ef40774a61c1 Mon Sep 17 00:00:00 2001 From: Lucas David Erkana Date: Mon, 10 Jul 2023 19:55:45 +0200 Subject: [PATCH] Define routes for user, category, and entity resources MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Added the devise_for :users route to handle user authentication routes provided by Devise. • Added a get route for the /splash URL, directing it to the splashes#index action. • Defined routes within the devise_scope block to handle root URLs for authenticated and unauthenticated users. • For authenticated users, set the root URL to categories#index action and name it authenticated_root. • For unauthenticated users, set the root URL to splashes#index action and name it unauthenticated_root. • Created nested routes for user resources, allowing routes for categories and entities that are associated with a user. • Restricted the routes for users to only the index, show, and new actions. • Restricted the routes for categories to only the new, create, show, index, and destroy actions. • Restricted the routes for entities to only the new, create, index, show, and destroy actions. --- app/controllers/users_controller.rb | 70 +++++------------------------ 1 file changed, 11 insertions(+), 59 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 779f395..30c921b 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,69 +1,21 @@ -class UsersController < ApplicationController - before_action :set_user, only: %i[show edit update destroy] +Rails.application.routes.draw do + devise_for :users - # GET /users or /users.json - def index - @users = User.all - end - - # GET /users/1 or /users/1.json - def show; end - - # GET /users/new - def new - @user = User.new - end + get '/splash', to: 'splashes#index' - # GET /users/1/edit - def edit; end - # POST /users or /users.json - def create - @user = User.new(user_params) - - respond_to do |format| - if @user.save - format.html { redirect_to user_url(@user), notice: 'User was successfully created.' } - format.json { render :show, status: :created, location: @user } - else - format.html { render :new, status: :unprocessable_entity } - format.json { render json: @user.errors, status: :unprocessable_entity } - end + devise_scope :user do + authenticated :user do + root 'categories#index', as: :authenticated_root end - end - # PATCH/PUT /users/1 or /users/1.json - def update - respond_to do |format| - if @user.update(user_params) - format.html { redirect_to user_url(@user), notice: 'User was successfully updated.' } - format.json { render :show, status: :ok, location: @user } - else - format.html { render :edit, status: :unprocessable_entity } - format.json { render json: @user.errors, status: :unprocessable_entity } - end + unauthenticated do + root "splashes#index", as: :unauthenticated_root end end - # DELETE /users/1 or /users/1.json - def destroy - @user.destroy - - respond_to do |format| - format.html { redirect_to users_url, notice: 'User was successfully destroyed.' } - format.json { head :no_content } - end - end - - private - - # Use callbacks to share common setup or constraints between actions. - def set_user - @user = User.find(params[:id]) - end - - # Only allow a list of trusted parameters through. - def user_params - params.require(:user).permit(:name) + resources :users, only: [:index, :show, :new] do + resources :categories, only: [:new, :create, :show, :index, :destroy] + resources :entities, only: [:new, :create, :index, :show, :destroy] end end