Dynamically update user list
This commit is contained in:
parent
a3a835312c
commit
f751af45ef
4 changed files with 28 additions and 8 deletions
2
Gemfile
2
Gemfile
|
|
@ -56,3 +56,5 @@ group :test do
|
|||
gem "capybara"
|
||||
gem "selenium-webdriver"
|
||||
end
|
||||
|
||||
gem "open3", "~> 0.2.1"
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@ GEM
|
|||
racc (~> 1.4)
|
||||
nokogiri (1.16.7-x86_64-linux)
|
||||
racc (~> 1.4)
|
||||
open3 (0.2.1)
|
||||
psych (5.1.2)
|
||||
stringio
|
||||
public_suffix (6.0.1)
|
||||
|
|
@ -251,6 +252,7 @@ DEPENDENCIES
|
|||
debug
|
||||
importmap-rails
|
||||
jbuilder
|
||||
open3 (~> 0.2.1)
|
||||
puma (>= 5.0)
|
||||
rails (~> 7.1.3, >= 7.1.3.4)
|
||||
selenium-webdriver
|
||||
|
|
|
|||
|
|
@ -1,2 +1,23 @@
|
|||
require 'open3'
|
||||
|
||||
module HomeHelper
|
||||
|
||||
def list_all_users
|
||||
stdout, stderr, status = Open3.capture3('getent', 'passwd')
|
||||
return [] unless status.success?
|
||||
valid_users = stdout.split("\n").select { |user| user.start_with?(/\w/) }.map(&:split).map(&:first)
|
||||
valid_users.map do |user|
|
||||
user.split(':')[0]
|
||||
end
|
||||
end
|
||||
|
||||
def users_with_public_html(users)
|
||||
users.select do |user|
|
||||
home_dir = Dir.home(user)
|
||||
File.exist?(File.join(home_dir, 'public_html'))
|
||||
end
|
||||
end
|
||||
|
||||
users = list_all_users
|
||||
users_with_public_html(users)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -7,14 +7,9 @@
|
|||
<div class="section">
|
||||
<p>Members</p>
|
||||
<ul class="members">
|
||||
<li><a href="/~amr">~amr</a></li>
|
||||
<li>~raf</li>
|
||||
<li><a href="/~floppy">~floppy</a></li>
|
||||
<li>~peachy</li>
|
||||
<li><a href="/~gld">~gld</a></li>
|
||||
<li><a href="/~cam">~cam</a></li>
|
||||
<li>~buddyatmos</li>
|
||||
<li>~dkay</li>
|
||||
<% list_all_users.each do |user| %>
|
||||
<li><a href="/~<%= user %>"><%= user %></a></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue