Create basic User index show

This commit is contained in:
Jesse C. Fisher 2023-11-06 05:21:19 +00:00
parent 6edf8288fa
commit ef0c9e69a0
5 changed files with 35 additions and 11 deletions

View File

@ -3,8 +3,8 @@ class UsersController < ApplicationController
after_action :verify_authorized after_action :verify_authorized
def index def index
@users = User.all @users = policy_scope User.all
authorize User authorize @users
end end
def show def show

View File

@ -6,12 +6,31 @@ class UserPolicy
@user = model @user = model
end end
class Scope
def initialize(user, scope)
@user = user
@scope = scope
end
def resolve
if user.admin?
scope.all
else
scope.where(role: User.roles[:admin])
end
end
private
attr_reader :user, :scope
end
def index? def index?
@current_user.admin? @current_user.admin? || true
end end
def show? def show?
@current_user.admin? || @current_user == @user @current_user.admin? || @current_user == @user || @user.admin?
end end
def update? def update?

View File

@ -2,6 +2,7 @@
<ul> <ul>
<li><%= link_to 'Public', root_path, data: { turbo: false } %></li> <li><%= link_to 'Public', root_path, data: { turbo: false } %></li>
<li><%= link_to 'Tokens', tokens_path %></li> <li><%= link_to 'Tokens', tokens_path %></li>
<li><%= link_to 'People', users_path %></li>
<li><%= link_to 'Projects', projects_path %></li> <li><%= link_to 'Projects', projects_path %></li>
<li><%= link_to 'Doodads', doodads_path, data: { turbo: false } %></li> <li><%= link_to 'Doodads', doodads_path, data: { turbo: false } %></li>
<% if !request.base_url.match(/pin|my|fireside/) %> <% if !request.base_url.match(/pin|my|fireside/) %>

View File

@ -1,12 +1,16 @@
<td> <td>
<%= link_to user.email, user %> <%= link_to user.display_name, user %>
</td> </td>
<td> <td>
<%= form_for(user) do |f| %> <% if policy(user).update? %>
<%= f.select(:role, User.roles.keys.map {|role| [role.titleize,role]}) %> <%= form_for(user) do |f| %>
<%= f.submit 'Change Role', :class => 'button-xs' %> <%= f.select(:role, User.roles.keys.map {|role| [role.titleize,role]}) %>
<%= f.submit 'Change Role', :class => 'button-xs' %>
<% end %>
<% end %> <% end %>
</td> </td>
<td> <td>
<%= link_to("Delete user", user_path(user), :data => { :confirm => "Are you sure?" }, :method => :delete, :class => 'button-xs') unless user == current_user %> <% if policy(user).destroy? %>
<%= link_to("Delete user", user_path(user), :data => { :confirm => "Are you sure?" }, :method => :delete, :class => 'button-xs') unless user == current_user %>
<% end %>
</td> </td>

View File

@ -1,3 +1,3 @@
<h3>User</h3> <h3>User</h3>
<p>Name: <%= @user.name if @user.name %></p> <p>Name: <%= @user.display_name if @user.display_name %></p>
<p>Email: <%= @user.email if @user.email %></p> <%# <p>Email: <%= @user.email if @user.email %1></p> %>