Dynamically update user list

This commit is contained in:
floppydiskette 2024-08-13 15:45:55 +01:00
commit f751af45ef
No known key found for this signature in database
4 changed files with 28 additions and 8 deletions

View file

@ -56,3 +56,5 @@ group :test do
gem "capybara" gem "capybara"
gem "selenium-webdriver" gem "selenium-webdriver"
end end
gem "open3", "~> 0.2.1"

View file

@ -147,6 +147,7 @@ GEM
racc (~> 1.4) racc (~> 1.4)
nokogiri (1.16.7-x86_64-linux) nokogiri (1.16.7-x86_64-linux)
racc (~> 1.4) racc (~> 1.4)
open3 (0.2.1)
psych (5.1.2) psych (5.1.2)
stringio stringio
public_suffix (6.0.1) public_suffix (6.0.1)
@ -251,6 +252,7 @@ DEPENDENCIES
debug debug
importmap-rails importmap-rails
jbuilder jbuilder
open3 (~> 0.2.1)
puma (>= 5.0) puma (>= 5.0)
rails (~> 7.1.3, >= 7.1.3.4) rails (~> 7.1.3, >= 7.1.3.4)
selenium-webdriver selenium-webdriver

View file

@ -1,2 +1,23 @@
require 'open3'
module HomeHelper 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 end

View file

@ -7,14 +7,9 @@
<div class="section"> <div class="section">
<p>Members</p> <p>Members</p>
<ul class="members"> <ul class="members">
<li><a href="/~amr">~amr</a></li> <% list_all_users.each do |user| %>
<li>~raf</li> <li><a href="/~<%= user %>"><%= user %></a></li>
<li><a href="/~floppy">~floppy</a></li> <% end %>
<li>~peachy</li>
<li><a href="/~gld">~gld</a></li>
<li><a href="/~cam">~cam</a></li>
<li>~buddyatmos</li>
<li>~dkay</li>
</ul> </ul>
</div> </div>
<div class="section"> <div class="section">