added users and onboarding

This commit is contained in:
q 2024-11-17 19:38:38 -05:00
parent 0b00bef7d8
commit 4523db7159
13 changed files with 155 additions and 40 deletions

View file

@ -34,5 +34,24 @@ EOF
# Create the style.css file
echo "/* Put custom styles here */" > "$path/$name/_werc/style.css"
# Update index.html
index_file="$path/index.html"
if [ -f "$index_file" ]; then
awk -v name="$name" '
{
print
if ($0 ~ /<!-- BUTTONS -->/) {
print " <div class=\"grid-item\">"
print " <a href=\"/" name "/\"><img src=\"/_werc/pub/img/but/" name ".gif\" alt=\"" name "\" /></a>"
print " </div>"
print ""
}
}' "$index_file" > "${index_file}.tmp" && mv "${index_file}.tmp" "$index_file"
echo "Updated index.html with new user entry"
else
echo "Warning: index.html not found at $index_file"
fi
# Output a success message
echo "Folder structure created successfully at $path/$name"

100
scripts/onboard.sh Executable file
View file

@ -0,0 +1,100 @@
#!/bin/bash
CONFIG_FILE="${CONFIG_FILE:-./.env/onboard.env}"
if [ ! -f "$CONFIG_FILE" ]; then
echo "Error: Configuration file not found at $CONFIG_FILE"
echo "CONFIG_FILE unset or .env/onboard.env does not exist"
exit 1
fi
source "$CONFIG_FILE"
usage() {
cat << EOF
Usage: $0 <username> <mkpasswd_hash> <htpasswd_hash>
Arguments:
username The username for the new account
mkpasswd_hash The hash generated by mkpasswd
htpasswd_hash The hash generated by htpasswd
EOF
exit 1
}
validate_input() {
[ $# -ne 3 ] && usage
[[ ! "$2" =~ ^\$6\$ ]] && echo "Error: Invalid mkpasswd hash format" && exit 1
[[ ! "$3" =~ ^\$apr1\$ ]] && echo "Error: Invalid htpasswd hash format" && exit 1
local required_vars=(
"SSH_USER" "SSH_HOST" "CONTAINER_NAME" "DOMAIN" "SERVICES_URL"
"USER_STRUCTURE_PATH" "WERC_PATH" "HTPASSWD_FILE"
)
for var in "${required_vars[@]}"; do
if [ -z "${!var}" ]; then
echo "Error: Required variable $var is not set in $CONFIG_FILE"
exit 1
fi
done
[ ! -d "$USER_STRUCTURE_PATH" ] && echo "Error: User structure path does not exist: $USER_STRUCTURE_PATH" && exit 1
[ ! -d "$WERC_PATH" ] && echo "Error: Werc path does not exist: $WERC_PATH" && exit 1
}
create_user_structure() {
local username="$1"
local mkpasswd_hash="$2"
local user_path="$USER_STRUCTURE_PATH/$username"
mkdir -p "$user_path"
echo "$mkpasswd_hash" > "$user_path/password"
echo "$username:$3" >> "$HTPASSWD_FILE"
}
setup_werc_structure() {
local username="$1"
./add_person.sh "$WERC_PATH" "$username"
}
generate_invite() {
invite=$(ssh "$SSH_USER@$SSH_HOST" "docker exec $CONTAINER_NAME prosodyctl mod_invites generate $DOMAIN" | tail -n 1)
[ -z "$invite" ] && echo "Error: Failed to generate invite" && exit 1
}
main() {
local username="$1"
local mkpasswd_hash="$2"
local htpasswd_hash="$3"
validate_input "$@"
echo "Setting up user structure..."
create_user_structure "$username" "$mkpasswd_hash" "$htpasswd_hash"
echo "Setting up werc structure..."
setup_werc_structure "$username"
echo "Generating invite..."
generate_invite
cat << EOF
User setup completed successfully!
Username: $username
Services URL: $SERVICES_URL
Invite link: $invite
The following paths have been updated:
- User structure: $USER_STRUCTURE_PATH/$username
- Werc structure: $WERC_PATH/$username
- Password file: $USER_STRUCTURE_PATH/$username/password
- Updated .htpasswd at: $HTPASSWD_FILE
Next steps:
1. Push changes to server
2. Send the services URL and invite link to the user
EOF
}
main "$@"