From 12a9641ca77ab39e5ab348876b586bd8c070f1fb Mon Sep 17 00:00:00 2001 From: Ben Date: Thu, 15 Feb 2024 17:23:54 -0600 Subject: [PATCH] Added an Admin tab to the main header. Added Forms and Users as additional pages. Set it so Users can only be accessed by an Admin. Still need to finish styling. Forms is set to default until worked on. --- app/controllers/forms_controller.rb | 50 +++++++++++++++++++ app/controllers/users_controller.rb | 41 +++++++++++++++ app/helpers/forms_helper.rb | 2 + app/helpers/users_helper.rb | 2 + app/models/form.rb | 2 + app/views/forms/create.html.erb | 2 + app/views/forms/destroy.html.erb | 2 + app/views/forms/edit.html.erb | 2 + app/views/forms/index.html.erb | 2 + app/views/forms/new.html.erb | 2 + app/views/forms/show.html.erb | 2 + app/views/forms/update.html.erb | 2 + app/views/layouts/_navbar.html.erb | 13 ++++- app/views/users/_form.html.erb | 27 ++++++++++ app/views/users/create.html.erb | 2 + app/views/users/destroy.html.erb | 2 + app/views/users/edit.html.erb | 5 ++ app/views/users/index.html.erb | 23 +++++++++ app/views/users/new.html.erb | 2 + app/views/users/show.html.erb | 2 + app/views/users/update.html.erb | 2 + config/routes.rb | 8 +++ db/migrate/20240215230240_create_forms.rb | 8 +++ .../20240215231142_add_admin_to_users.rb | 5 ++ db/schema.rb | 8 ++- test/controllers/forms_controller_test.rb | 38 ++++++++++++++ test/controllers/users_controller_test.rb | 38 ++++++++++++++ test/fixtures/forms.yml | 11 ++++ test/models/form_test.rb | 7 +++ 29 files changed, 310 insertions(+), 2 deletions(-) create mode 100644 app/controllers/forms_controller.rb create mode 100644 app/controllers/users_controller.rb create mode 100644 app/helpers/forms_helper.rb create mode 100644 app/helpers/users_helper.rb create mode 100644 app/models/form.rb create mode 100644 app/views/forms/create.html.erb create mode 100644 app/views/forms/destroy.html.erb create mode 100644 app/views/forms/edit.html.erb create mode 100644 app/views/forms/index.html.erb create mode 100644 app/views/forms/new.html.erb create mode 100644 app/views/forms/show.html.erb create mode 100644 app/views/forms/update.html.erb create mode 100644 app/views/users/_form.html.erb create mode 100644 app/views/users/create.html.erb create mode 100644 app/views/users/destroy.html.erb create mode 100644 app/views/users/edit.html.erb create mode 100644 app/views/users/index.html.erb create mode 100644 app/views/users/new.html.erb create mode 100644 app/views/users/show.html.erb create mode 100644 app/views/users/update.html.erb create mode 100644 db/migrate/20240215230240_create_forms.rb create mode 100644 db/migrate/20240215231142_add_admin_to_users.rb create mode 100644 test/controllers/forms_controller_test.rb create mode 100644 test/controllers/users_controller_test.rb create mode 100644 test/fixtures/forms.yml create mode 100644 test/models/form_test.rb diff --git a/app/controllers/forms_controller.rb b/app/controllers/forms_controller.rb new file mode 100644 index 0000000..ce964d7 --- /dev/null +++ b/app/controllers/forms_controller.rb @@ -0,0 +1,50 @@ +# app/controllers/forms_controller.rb + +class FormsController < ApplicationController + before_action :set_form, only: [:show, :edit, :update, :destroy] + + def index + @forms = Form.all + end + + def show + end + + def new + @form = Form.new + end + + def create + @form = Form.new(form_params) + if @form.save + redirect_to @form, notice: 'Form was successfully created.' + else + render :new + end + end + + def edit + end + + def update + if @form.update(form_params) + redirect_to @form, notice: 'Form was successfully updated.' + else + render :edit + end + end + + def destroy + @form.destroy + redirect_to forms_url, notice: 'Form was successfully destroyed.' + end + + private + def set_form + @form = Form.find(params[:id]) + end + + def form_params + params.require(:form).permit(:name) # Adjust attributes as needed + end +end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb new file mode 100644 index 0000000..d1920fe --- /dev/null +++ b/app/controllers/users_controller.rb @@ -0,0 +1,41 @@ +class UsersController < ApplicationController + before_action :authenticate_user! + before_action :set_user, only: [:edit, :update, :destroy] + before_action :require_admin + + def index + @users = User.all + end + + def edit + end + + def update + if @user.update(user_params) + redirect_to users_path, notice: 'User was successfully updated.' + else + render :edit + end + end + + def destroy + @user.destroy + redirect_to 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(:email, :admin) + end + + def require_admin + unless current_user.admin? + redirect_to root_path, alert: 'Only admins are allowed to access this section.' + end + end +end diff --git a/app/helpers/forms_helper.rb b/app/helpers/forms_helper.rb new file mode 100644 index 0000000..c804d34 --- /dev/null +++ b/app/helpers/forms_helper.rb @@ -0,0 +1,2 @@ +module FormsHelper +end diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb new file mode 100644 index 0000000..2310a24 --- /dev/null +++ b/app/helpers/users_helper.rb @@ -0,0 +1,2 @@ +module UsersHelper +end diff --git a/app/models/form.rb b/app/models/form.rb new file mode 100644 index 0000000..dc126d8 --- /dev/null +++ b/app/models/form.rb @@ -0,0 +1,2 @@ +class Form < ApplicationRecord +end diff --git a/app/views/forms/create.html.erb b/app/views/forms/create.html.erb new file mode 100644 index 0000000..fa1beda --- /dev/null +++ b/app/views/forms/create.html.erb @@ -0,0 +1,2 @@ +

Forms#create

+

Find me in app/views/forms/create.html.erb

diff --git a/app/views/forms/destroy.html.erb b/app/views/forms/destroy.html.erb new file mode 100644 index 0000000..6ce5c0a --- /dev/null +++ b/app/views/forms/destroy.html.erb @@ -0,0 +1,2 @@ +

Forms#destroy

+

Find me in app/views/forms/destroy.html.erb

diff --git a/app/views/forms/edit.html.erb b/app/views/forms/edit.html.erb new file mode 100644 index 0000000..2a979c6 --- /dev/null +++ b/app/views/forms/edit.html.erb @@ -0,0 +1,2 @@ +

Forms#edit

+

Find me in app/views/forms/edit.html.erb

diff --git a/app/views/forms/index.html.erb b/app/views/forms/index.html.erb new file mode 100644 index 0000000..3964715 --- /dev/null +++ b/app/views/forms/index.html.erb @@ -0,0 +1,2 @@ +

Forms Index

+

Placeholder for listing forms.

\ No newline at end of file diff --git a/app/views/forms/new.html.erb b/app/views/forms/new.html.erb new file mode 100644 index 0000000..e4a8cb0 --- /dev/null +++ b/app/views/forms/new.html.erb @@ -0,0 +1,2 @@ +

Forms#new

+

Find me in app/views/forms/new.html.erb

diff --git a/app/views/forms/show.html.erb b/app/views/forms/show.html.erb new file mode 100644 index 0000000..19869da --- /dev/null +++ b/app/views/forms/show.html.erb @@ -0,0 +1,2 @@ +

Forms#show

+

Find me in app/views/forms/show.html.erb

diff --git a/app/views/forms/update.html.erb b/app/views/forms/update.html.erb new file mode 100644 index 0000000..ea10c92 --- /dev/null +++ b/app/views/forms/update.html.erb @@ -0,0 +1,2 @@ +

Forms#update

+

Find me in app/views/forms/update.html.erb

diff --git a/app/views/layouts/_navbar.html.erb b/app/views/layouts/_navbar.html.erb index c81b7e2..0184543 100644 --- a/app/views/layouts/_navbar.html.erb +++ b/app/views/layouts/_navbar.html.erb @@ -6,7 +6,7 @@