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
def index
@users = User.all
authorize User
@users = policy_scope User.all
authorize @users
end
def show

View File

@ -6,12 +6,31 @@ class UserPolicy
@user = model
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?
@current_user.admin?
@current_user.admin? || true
end
def show?
@current_user.admin? || @current_user == @user
@current_user.admin? || @current_user == @user || @user.admin?
end
def update?

View File

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

View File

@ -1,12 +1,16 @@
<td>
<%= link_to user.email, user %>
<%= link_to user.display_name, user %>
</td>
<td>
<%= form_for(user) do |f| %>
<%= f.select(:role, User.roles.keys.map {|role| [role.titleize,role]}) %>
<%= f.submit 'Change Role', :class => 'button-xs' %>
<% if policy(user).update? %>
<%= form_for(user) do |f| %>
<%= f.select(:role, User.roles.keys.map {|role| [role.titleize,role]}) %>
<%= f.submit 'Change Role', :class => 'button-xs' %>
<% end %>
<% end %>
</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>

View File

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