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 @@
-
+
-
<%= link_to 'Participants', participants_path, class: 'nav-link' %>
@@ -20,6 +20,17 @@
<%= link_to 'Vendors', vendors_path, class: 'nav-link' %>
+
+ -
+
+
+
+
<% if user_signed_in? %>
-
diff --git a/app/views/users/_form.html.erb b/app/views/users/_form.html.erb
new file mode 100644
index 0000000..45fea92
--- /dev/null
+++ b/app/views/users/_form.html.erb
@@ -0,0 +1,27 @@
+<%= form_with(model: user, local: true) do |form| %>
+ <% if user.errors.any? %>
+
+
<%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:
+
+ <% user.errors.full_messages.each do |message| %>
+ - <%= message %>
+ <% end %>
+
+
+ <% end %>
+
+
+ <%= form.label :email %>
+ <%= form.email_field :email, id: :user_email %>
+
+
+
+ <%= form.label :admin %>
+ <%= form.check_box :admin %>
+
+
+
+ <%= form.submit 'Save', class: 'btn btn-primary' %>
+
+ <% end %>
+
\ No newline at end of file
diff --git a/app/views/users/create.html.erb b/app/views/users/create.html.erb
new file mode 100644
index 0000000..48ea02e
--- /dev/null
+++ b/app/views/users/create.html.erb
@@ -0,0 +1,2 @@
+Users#create
+Find me in app/views/users/create.html.erb
diff --git a/app/views/users/destroy.html.erb b/app/views/users/destroy.html.erb
new file mode 100644
index 0000000..de4bd26
--- /dev/null
+++ b/app/views/users/destroy.html.erb
@@ -0,0 +1,2 @@
+Users#destroy
+Find me in app/views/users/destroy.html.erb
diff --git a/app/views/users/edit.html.erb b/app/views/users/edit.html.erb
new file mode 100644
index 0000000..810147d
--- /dev/null
+++ b/app/views/users/edit.html.erb
@@ -0,0 +1,5 @@
+Edit User
+
+<%= render 'form', user: @user %>
+
+<%= link_to 'Back to Users', users_path, class: 'btn btn-secondary' %>
diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb
new file mode 100644
index 0000000..2330ada
--- /dev/null
+++ b/app/views/users/index.html.erb
@@ -0,0 +1,23 @@
+Users
+
+
+
+
+ Email |
+ Admin |
+ Actions |
+
+
+
+ <% @users.each do |user| %>
+
+ <%= user.email %> |
+ <%= user.admin? ? 'Yes' : 'No' %> |
+
+ <%= link_to 'Edit', edit_user_path(user), class: 'btn btn-info' %>
+ <%= link_to 'Delete', user_path(user), method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-danger' %>
+ |
+
+ <% end %>
+
+
diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb
new file mode 100644
index 0000000..c21a1ad
--- /dev/null
+++ b/app/views/users/new.html.erb
@@ -0,0 +1,2 @@
+Users#new
+Find me in app/views/users/new.html.erb
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb
new file mode 100644
index 0000000..e5fa3ad
--- /dev/null
+++ b/app/views/users/show.html.erb
@@ -0,0 +1,2 @@
+Users#show
+Find me in app/views/users/show.html.erb
diff --git a/app/views/users/update.html.erb b/app/views/users/update.html.erb
new file mode 100644
index 0000000..cabbde1
--- /dev/null
+++ b/app/views/users/update.html.erb
@@ -0,0 +1,2 @@
+Users#update
+Find me in app/views/users/update.html.erb
diff --git a/config/routes.rb b/config/routes.rb
index c118e59..70c3144 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -5,6 +5,11 @@ Rails.application.routes.draw do
root 'home#index', as: :authenticated_root
end
+ authenticate :user, lambda { |u| u.admin? } do
+ resources :users, only: [:index, :edit, :update, :destroy]
+ end
+
+
devise_scope :user do
root to: 'devise/sessions#new'
end
@@ -53,6 +58,9 @@ Rails.application.routes.draw do
end
get 'search', on: :collection
end
+
+ resources :forms
+ resources :users
diff --git a/db/migrate/20240215230240_create_forms.rb b/db/migrate/20240215230240_create_forms.rb
new file mode 100644
index 0000000..bcc4036
--- /dev/null
+++ b/db/migrate/20240215230240_create_forms.rb
@@ -0,0 +1,8 @@
+class CreateForms < ActiveRecord::Migration[7.1]
+ def change
+ create_table :forms do |t|
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20240215231142_add_admin_to_users.rb b/db/migrate/20240215231142_add_admin_to_users.rb
new file mode 100644
index 0000000..68242b3
--- /dev/null
+++ b/db/migrate/20240215231142_add_admin_to_users.rb
@@ -0,0 +1,5 @@
+class AddAdminToUsers < ActiveRecord::Migration[7.1]
+ def change
+ add_column :users, :admin, :boolean, default: false, null: false
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 1a8e209..de272d4 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[7.1].define(version: 2024_02_12_212110) do
+ActiveRecord::Schema[7.1].define(version: 2024_02_15_231142) do
create_table "bank_accounts", force: :cascade do |t|
t.string "institution_name"
t.string "account_type"
@@ -72,6 +72,11 @@ ActiveRecord::Schema[7.1].define(version: 2024_02_12_212110) do
t.index ["worker_id"], name: "index_employments_on_worker_id"
end
+ create_table "forms", force: :cascade do |t|
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ end
+
create_table "participants", force: :cascade do |t|
t.string "first_name"
t.string "phone"
@@ -131,6 +136,7 @@ ActiveRecord::Schema[7.1].define(version: 2024_02_12_212110) do
t.datetime "remember_created_at"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
+ t.boolean "admin", default: false, null: false
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
end
diff --git a/test/controllers/forms_controller_test.rb b/test/controllers/forms_controller_test.rb
new file mode 100644
index 0000000..1cd5549
--- /dev/null
+++ b/test/controllers/forms_controller_test.rb
@@ -0,0 +1,38 @@
+require "test_helper"
+
+class FormsControllerTest < ActionDispatch::IntegrationTest
+ test "should get index" do
+ get forms_index_url
+ assert_response :success
+ end
+
+ test "should get new" do
+ get forms_new_url
+ assert_response :success
+ end
+
+ test "should get create" do
+ get forms_create_url
+ assert_response :success
+ end
+
+ test "should get edit" do
+ get forms_edit_url
+ assert_response :success
+ end
+
+ test "should get update" do
+ get forms_update_url
+ assert_response :success
+ end
+
+ test "should get show" do
+ get forms_show_url
+ assert_response :success
+ end
+
+ test "should get destroy" do
+ get forms_destroy_url
+ assert_response :success
+ end
+end
diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb
new file mode 100644
index 0000000..a0390ee
--- /dev/null
+++ b/test/controllers/users_controller_test.rb
@@ -0,0 +1,38 @@
+require "test_helper"
+
+class UsersControllerTest < ActionDispatch::IntegrationTest
+ test "should get index" do
+ get users_index_url
+ assert_response :success
+ end
+
+ test "should get new" do
+ get users_new_url
+ assert_response :success
+ end
+
+ test "should get create" do
+ get users_create_url
+ assert_response :success
+ end
+
+ test "should get edit" do
+ get users_edit_url
+ assert_response :success
+ end
+
+ test "should get update" do
+ get users_update_url
+ assert_response :success
+ end
+
+ test "should get show" do
+ get users_show_url
+ assert_response :success
+ end
+
+ test "should get destroy" do
+ get users_destroy_url
+ assert_response :success
+ end
+end
diff --git a/test/fixtures/forms.yml b/test/fixtures/forms.yml
new file mode 100644
index 0000000..d7a3329
--- /dev/null
+++ b/test/fixtures/forms.yml
@@ -0,0 +1,11 @@
+# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+# This model initially had no columns defined. If you add columns to the
+# model remove the "{}" from the fixture names and add the columns immediately
+# below each fixture, per the syntax in the comments below
+#
+one: {}
+# column: value
+#
+two: {}
+# column: value
diff --git a/test/models/form_test.rb b/test/models/form_test.rb
new file mode 100644
index 0000000..21193f7
--- /dev/null
+++ b/test/models/form_test.rb
@@ -0,0 +1,7 @@
+require "test_helper"
+
+class FormTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end