Skip to content

Commit

Permalink
Add user dev tools
Browse files Browse the repository at this point in the history
  • Loading branch information
ArtOfCode- committed Dec 28, 2017
1 parent 0c96402 commit 199d750
Show file tree
Hide file tree
Showing 3 changed files with 134 additions and 0 deletions.
28 changes: 28 additions & 0 deletions app/controllers/users_controller.rb
Expand Up @@ -2,6 +2,8 @@

class UsersController < ApplicationController
before_action :authenticate_user!, except: [:missing_privileges]
before_action :verify_developer, only: [:show, :refresh_ids, :send_password_reset, :update_mod_sites]
before_action :set_user, only: [:show, :refresh_ids, :send_password_reset, :update_mod_sites]

def username; end

Expand Down Expand Up @@ -108,4 +110,30 @@ def missing_privileges
def flagging_enabled
@users = User.where(flags_enabled: true).paginate(per_page: 100, page: params[:page])
end

def show; end

def refresh_ids
@user.update_chat_ids
flash[:success] = "Chat IDs refreshed for #{@user.username}."
redirect_to user_path(@user)
end

def send_password_reset
@user.send_reset_password_instructions
flash[:success] = "Reset email sent to #{@user.username}."
redirect_to user_path(@user)
end

def update_mod_sites
@user.update_moderator_sites
flash[:success] = "Refreshed mod sites list for #{@user.username}."
redirect_to user_path(@user)
end

private

def set_user
@user = User.find params[:id]
end
end
101 changes: 101 additions & 0 deletions app/views/users/show.html.erb
@@ -0,0 +1,101 @@
<h3>User: <%= @user.username %></h3>
<p class="text-muted">Created: <span title="<%= @user.created_at %>"><%= time_ago_in_words @user.created_at %> ago</span></p>

<div class="row">
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title">SE Auth</h5>
</div>
<div class="panel-body">
<p>
<strong>Read access (auth-only):</strong> <%= @user.stack_exchange_account_id.present? ? 'Yes' : 'No' %><br/>
<strong>Write access (auth+flags):</strong> <%= @user.encrypted_api_token.present? ? 'Yes' : 'No' %>
</p>
<p>
<strong>Account ID:</strong> <%= link_to @user.stack_exchange_account_id, "https://stackexchange.com/users/#{@user.stack_exchange_account_id}" %><br/>
<strong>SE chat ID:</strong> <%= link_to @user.stackexchange_chat_id, "https://chat.stackexchange.com/users/#{@user.stackexchange_chat_id}" %><br/>
<strong>SO chat ID:</strong> <%= link_to @user.stackoverflow_chat_id, "https://chat.stackoverflow.com/users/#{@user.stackoverflow_chat_id}" %><br/>
<strong>MSE chat ID:</strong> <%= link_to @user.meta_stackexchange_chat_id, "https://chat.meta.stackexchange.com/users/#{@user.meta_stackexchange_chat_id}" %>
</p>
<p>
<%= link_to 'Refresh chat IDs', update_user_chat_ids_path(@user), method: :post, class: 'btn btn-info' %>
</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title">Flagging</h5>
</div>
<div class="panel-body">
<p>
<strong>Enabled:</strong> <%= @user.flags_enabled? ? 'Yes' : 'No' %><br/>
<%= link_to 'User Overview', user_overview_path(user: @user.id) %>
</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title">Authentication</h5>
</div>
<div class="panel-body">
<p>
<strong>Email:</strong> <%= @user.email =~ /(metasmoke\.fake|se-oauth\.metasmoke)/ ? 'No' : 'Yes' %><br/>
<strong>SE:</strong> <%= @user.stack_exchange_account_id.present? ? 'Yes' : 'No' %><br/>
<strong>2FA:</strong> <%= @user.enabled_2fa? ? 'Yes' : 'No' %>
</p>
<p>
<%= link_to 'Send password reset email', send_password_reset_path(@user), method: :post, class: 'btn btn-info' %>
</p>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title">Mod sites</h5>
</div>
<div class="panel-body">
<% if @user.moderator_sites.any? %>
<ul>
<% @user.moderator_sites.each do |s| %>
<li><%= s.site.site_name %></li>
<% end %>
</ul>
<% else %>
<p><em>User is not a moderator.</em></p>
<% end %>
<p>
<%= link_to 'Refresh mod sites', update_mod_sites_path(@user), method: :post, class: 'btn btn-info' %>
</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title">Misc</h5>
</div>
<div class="panel-body">
<p>
<strong>Announcement emails:</strong>
<% if @user.announcement_emails? && @user.email =~ /(metasmoke\.fake|se-oauth\.metasmoke)/ %>
<span title="Emails enabled, but user has an SE OAuth or faked email address." data-toggle="tooltip" class="text-warning">
<span class="glyphicon glyphicon-exclamation-sign"></span> Enabled with issues
</span>
<% elsif @user.announcement_emails? %>
Yes
<% else %>
No
<% end %>
</p>
</div>
</div>
</div>
</div>
5 changes: 5 additions & 0 deletions config/routes.rb
Expand Up @@ -31,6 +31,11 @@
post 'update_email', to: 'users#update_email'

get 'denied', to: 'users#missing_privileges', as: :missing_privileges

get ':id', to: 'users#show', as: :user
post ':id/update_ids', to: 'users#refresh_ids', as: :update_user_chat_ids
post ':id/reset_pass', to: 'users#send_password_reset', as: :send_password_reset
post ':id/update_mod_sites', to: 'users#update_mod_sites', as: :update_mod_sites
end

scope '/review' do
Expand Down

0 comments on commit 199d750

Please sign in to comment.