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

1
.gitignore vendored
View file

@ -2,3 +2,4 @@
.htpasswd
werc/etc/*
scripts/commands.txt
.env

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 "$@"

View file

@ -0,0 +1,4 @@
extraHeaders='<link rel="stylesheet" type="text/css" href="_werc/style.css">'
conf_enable_wiki
conf_enable_cssedit 2fac
css_file='_werc/style.css'

View file

@ -0,0 +1 @@
/* Put custom styles here */

View file

@ -0,0 +1,6 @@
conf_enable_wiki
conf_enable_blog
conf_blog_only_pull=0
conf_blog_editors=2fac
blogTitle='2fac Feed'
blogDesc=''

View file

@ -1,39 +1 @@
:root {
/* Main color scheme */
--color-primary: #E4F0FEff;
--color-secondary: #AEA3F0ff;
--color-accent: #A4D1ADff;
/* Background colors */
--bg-primary: #000300ff;
--bg-secondary: #1C202Fff;
/* Text colors */
--text-primary: #E4F0FEff;
--text-secondary: #989898ff;
--text-accent: #AEA3F0ff;
/* Header colours */
--header-primary:#AEA3F0ff;
--header-secondary: #AEA3F0ff;
--header-tertiary: #A4D1ADff;
--header-other: #E4F0FEff;
/* Link colors */
--link-color: #2667deff;
--link-hover: #5B3D8Aff;
/* Border colors */
--border-primary: #C0CEE8ff;
--border-secondary: #0C072Cff;
--border-image: #000300ff;
/* Special purpose colors */
--code-color: #18A02Cff;
--header-bg: #AEA3F0ff;
--header-text: #0C072Cff;
/* Font families */
--font-headers: 'rumeur', sans-serif;
--font-body: verdana, helvetica, arial, sans-serif;
}
/* Put custom styles here */

View file

@ -2,5 +2,5 @@ conf_enable_wiki
conf_enable_blog
conf_blog_only_pull=0
conf_blog_editors=bea
blogTitle=''
blogTitle='bea Feed'
blogDesc=''

View file

@ -0,0 +1,4 @@
extraHeaders='<link rel="stylesheet" type="text/css" href="_werc/style.css">'
conf_enable_wiki
conf_enable_cssedit drool
css_file='_werc/style.css'

View file

@ -0,0 +1 @@
/* Put custom styles here */

View file

@ -0,0 +1,6 @@
conf_enable_wiki
conf_enable_blog
conf_blog_only_pull=0
conf_blog_editors=drool
blogTitle='drool Feed'
blogDesc=''

View file

@ -33,5 +33,12 @@
<div class="grid-item">
<a href="/bea/"><img src="/_werc/pub/img/but/bea.gif" alt="bea" /></a>
</div>
<div class="grid-item">
<a href="/drool/"><img src="/_werc/pub/img/but/drool.gif" alt="drool" /></a>
</div>
<div class="grid-item">
<a href="/2fac/"><img src="/_werc/pub/img/but/2fac.gif" alt="2fac" /></a>
</div>
<!-- BUTTONS -->
</div>
</div>

View file

@ -0,0 +1,4 @@
Getting Organized
-------------------------------------
Currently [https://git.thirdculture.top](https://git.thirdculture.top) has a shortlist of issues I want to solve before I start creating more content for thirdculture. Just finished it today, going to start on it today. Happy to see people adding to the site and its not just me, feels great. Want to write a bit more guides on how to use specific things as this software is a bit prone to messing up and markdown is a coding language I guess, its (friendly) anarchy right now haha. Having a lot of issues with syncing new changes on the site and then patching in my own fixes that's a major priority for me right now. Anyway bear with me, I also got a live mix to fix up still, an album to mix and master and school the latter being the most noise :(.