Skip to content

Commit 6767100

Browse files
author
Ryan Closner
committed
Allow users to be created/updated
1 parent a8180a2 commit 6767100

File tree

7 files changed

+107
-15
lines changed

7 files changed

+107
-15
lines changed

app/controllers/users_controller.rb

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
class UsersController < ApplicationController
2-
before_action :set_user, only: [:edit, :update,:destroy]
2+
before_action :set_user, only: [:edit, :update, :approve, :destroy]
33
before_action :authenticate_user!
44
before_action :check_admin
55
before_action :count_admins
66

7+
def new
8+
@user = User.new
9+
end
710

811
def index
912
if params[:approved] == "false"
@@ -30,24 +33,33 @@ def update
3033
end
3134

3235
def destroy
33-
if current_user.admin?
34-
if @user.destroy
35-
redirect_to users_path, notice: "User was successfully deleted."
36-
else
37-
redirect_to :back, alert: "An error occurred when deleting the user."
38-
end
36+
if @user.destroy
37+
redirect_to users_path, notice: "User was successfully deleted."
38+
else
39+
redirect_to :back, alert: "An error occurred when deleting the user."
40+
end
41+
end
42+
43+
def create
44+
@user = User.new(user_params)
45+
46+
if @user.save
47+
redirect_to users_path, notice: "User was successfully created."
3948
else
40-
redirect_to :back, alert: "Your account is not authorized to delete users."
49+
render :new
4150
end
4251
end
4352

53+
def approve
54+
end
55+
4456
private
4557
def set_user
4658
@user = User.find(params[:id])
4759
end
4860

4961
def user_params
50-
params.require(:user).permit(:approved, :organization_id, :admin)
62+
params.require(:user).permit(:approved, :organization_id, :admin, :password, :password_confirmation, :email)
5163
end
5264

5365
def check_admin

app/views/users/_form.html

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from bein
1212
<% end %>
1313

1414
<div class="field">
15-
<span class='h3-Edit'><%= f.label :email %></span><span class='formAnswer'><%= @user.email %></span>
15+
<span class='h3-Edit'><%= f.label :email %></span><span class='formAnswer'><%= f.text_field(:email) %></span>
1616
</div>
1717
<div class="field">
1818
<span class='h3-Edit'><%= f.label :approved %></span>
@@ -23,6 +23,17 @@ <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from bein
2323
<!-- <%= f.text_field :organization %> -->
2424
<%= f.select :organization_id, Organization.all.collect{ |org| [org.code, org.id]}, include_blank: true %>
2525
</div>
26+
<div class="field">
27+
<span class='h3-Edit'><%= f.label :password %></span>
28+
<!-- <%= f.text_field :organization %> -->
29+
<%= f.password_field(:password) %>
30+
</div>
31+
<div class="field">
32+
<span class='h3-Edit'><%= f.label :password_confirmation %></span>
33+
<!-- <%= f.text_field :organization %> -->
34+
<%= f.password_field(:password_confirmation) %>
35+
</div>
36+
2637
<div class="field">
2738
<span class='h3-Edit'><%= f.label :admin %></span>
2839
<% if (@user.admin) && (@admin_count == 1) %>
@@ -35,4 +46,4 @@ <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from bein
3546
<div class="actions">
3647
<%= f.submit %>
3748
</div>
38-
<% end %>
49+
<% end %>

app/views/users/approve.html

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<h1>User Approval</h1>
2+
3+
<div class='formContent'>
4+
<%= form_for(@user) do |f| %>
5+
<% if @user.errors.any? %>
6+
<div id="error_explanation">
7+
<h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
8+
9+
<ul>
10+
<% @user.errors.full_messages.each do |msg| %>
11+
<li><%= msg %></li>
12+
<% end %>
13+
</ul>
14+
</div>
15+
<% end %>
16+
17+
<div class="field">
18+
<span class='h3-Edit'><%= f.label :email %></span><span class='formAnswer'><%= @user.email %></span>
19+
</div>
20+
<div class="field">
21+
<span class='h3-Edit'><%= f.label :approved %></span>
22+
<%= f.check_box :approved %>
23+
</div>
24+
<div class="field">
25+
<span class='h3-Edit'><%= f.label :organization %></span>
26+
<!-- <%= f.text_field :organization %> -->
27+
<%= f.select :organization_id, Organization.all.collect{ |org| [org.code, org.id]}, include_blank: true %>
28+
</div>
29+
<div class="field">
30+
<span class='h3-Edit'><%= f.label :admin %></span>
31+
<% if (@user.admin) && (@admin_count == 1) %>
32+
<span class='finePrint'><%= f.check_box :admin, disabled: true %>
33+
(Note: You can't deselect the only admin account.)</span>
34+
<% else %>
35+
<%= f.check_box :admin %>
36+
<% end %>
37+
</div>
38+
<div class="actions">
39+
<%= f.submit %>
40+
</div>
41+
<% end %>
42+
</div>
43+
44+
<div class='formButtons'>
45+
<!--back button <span class='addNewButton'>
46+
<%= link_to 'Back', users_path %>
47+
</span> -->
48+
</div>

app/views/users/edit.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<h1>User Approval</h1>
1+
<h1>Edit User</h1>
22

33
<div class='formContent'>
44
<%= render 'form' %>
@@ -8,4 +8,4 @@ <h1>User Approval</h1>
88
<!--back button <span class='addNewButton'>
99
<%= link_to 'Back', users_path %>
1010
</span> -->
11-
</div>
11+
</div>

app/views/users/index.html

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ <h1>Users</h1>
2626
<td><%= user.approved %></td>
2727
<td><%= user.admin? %></td>
2828
<td><%= user.organization.code if user.organization %></td>
29-
<td><%= link_to "Edit", edit_user_path(user), :class => "tableLink" %></td>
29+
<td><%= link_to "Edit", approve_user_path(user), :class => "tableLink" %></td>
3030
<% if user == current_user %>
3131
<td>Delete</td>
3232
<% else %>
@@ -35,3 +35,9 @@ <h1>Users</h1>
3535
</tr>
3636
<% end %>
3737
</table>
38+
39+
<div class='formButtons'>
40+
<% if current_user.admin? %>
41+
<span class='buttonBelow'><%= link_to 'Add New User', new_user_path%></span>
42+
<% end %>
43+
</div>

app/views/users/new.html

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<h1>New User</h1>
2+
3+
<div class='formContent'>
4+
<%= render 'form' %>
5+
</div>
6+
7+
<div class='formButtons'>
8+
<!--back button <span class='addNewButton'>
9+
<%= link_to 'Back', users_path %>
10+
</span> -->
11+
</div>

config/routes.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44
devise_for :users, :controllers => { :registrations => "registrations" }
55

66
scope "/admin" do
7-
resources :users
7+
resources :users do
8+
member do
9+
get :approve
10+
end
11+
end
812
end
913

1014
resources :trailsegments do

0 commit comments

Comments
 (0)