From 0f9f1a84f94299b59504448b1743cf51bc47427d Mon Sep 17 00:00:00 2001 From: Artur Gurgul1 Date: Thu, 7 Aug 2025 16:53:10 +0200 Subject: [PATCH] implement adding users --- lib/user.rb | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/lib/user.rb b/lib/user.rb index 230cfbd..b084396 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,8 +1,37 @@ module User + require 'system' def self.install(context) puts "Creating #{context.type}: #{context.user_name}" + System.install(["zsh"]) + + user_exists = system("getent passwd #{context.user_name} > /dev/null") + + group = case context.type + when :user + "users" + when :service + "services" + else + rise "Can not create user for unknow type: #{context.type}" + end + + + group_exists = system("getent group #{group} > /dev/null") + unless group_exists + puts "Group '#{group}' does not exist. Creating it..." + system("sudo groupadd #{group}") + end + + if user_exists + puts "User #{context.user_name} already exists. Updating shell and adding to group '#{group}'." + system("sudo usermod -s /usr/bin/zsh #{context.user_name}") + system("sudo usermod -g #{group} #{context.user_name}") + else + puts "User #{context.user_name} does not exist. Creating user..." + system("sudo adduser --disabled-login --gecos \"\" --ingroup #{group} --shell /usr/bin/zsh #{context.user_name}") + end end end