Merge pull request #364 from outis1one/claude/gitea-standalone-setup-oxoi2e
authelia: let user-management menu pick and act on multiple users per…
This commit is contained in:
+58
-20
@@ -1324,28 +1324,66 @@ edit_authelia_user() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local -a USERNAMES
|
# Outer loop: pick one or more users by number, act on each in turn (via
|
||||||
mapfile -t USERNAMES < <(_authelia_list_usernames "$USERS_FILE")
|
# _authelia_manage_one_user below), then ask whether to go again — so
|
||||||
if [ "${#USERNAMES[@]}" -eq 0 ]; then
|
# deleting/editing several users doesn't require re-running the whole
|
||||||
log_warning "No users found in $USERS_FILE."
|
# script and re-navigating this menu from scratch for every single one.
|
||||||
return 0
|
local KEEP_GOING="y"
|
||||||
fi
|
while [[ "$KEEP_GOING" =~ ^[Yy]$ ]]; do
|
||||||
|
local -a USERNAMES
|
||||||
|
mapfile -t USERNAMES < <(_authelia_list_usernames "$USERS_FILE")
|
||||||
|
if [ "${#USERNAMES[@]}" -eq 0 ]; then
|
||||||
|
log_warning "No users left in $USERS_FILE."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo " Existing users:"
|
echo " Existing users:"
|
||||||
local i=1 u
|
local i
|
||||||
for u in "${USERNAMES[@]}"; do
|
for i in "${!USERNAMES[@]}"; do
|
||||||
echo " $i) $u"
|
echo " $((i + 1))) ${USERNAMES[$i]}"
|
||||||
i=$((i + 1))
|
done
|
||||||
|
echo ""
|
||||||
|
echo " Select one or more by number (space-separated, e.g. \"2 4\"),"
|
||||||
|
echo " blank to cancel."
|
||||||
|
local SEL=""
|
||||||
|
prompt_text " User number(s):" "" SEL
|
||||||
|
if [ -z "$SEL" ]; then
|
||||||
|
log_info "Cancelled."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
local -a SEL_TOKENS TARGETS=()
|
||||||
|
read -ra SEL_TOKENS <<< "$SEL"
|
||||||
|
local tok
|
||||||
|
for tok in "${SEL_TOKENS[@]}"; do
|
||||||
|
if [[ "$tok" =~ ^[0-9]+$ ]] && [ "$tok" -ge 1 ] && [ "$tok" -le "${#USERNAMES[@]}" ]; then
|
||||||
|
TARGETS+=("${USERNAMES[$((tok - 1))]}")
|
||||||
|
else
|
||||||
|
log_warning "Skipping invalid selection: $tok"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
local TARGET
|
||||||
|
for TARGET in "${TARGETS[@]}"; do
|
||||||
|
# A user picked earlier in this same batch may have just been
|
||||||
|
# deleted (or this number was picked twice) — re-check before
|
||||||
|
# acting instead of operating on a now-stale line range.
|
||||||
|
grep -qE "^ ${TARGET}:$" "$USERS_FILE" 2>/dev/null || { log_info "'$TARGET' no longer exists — skipping."; continue; }
|
||||||
|
_authelia_manage_one_user "$TARGET" "$USERS_FILE" "$CONFIG_FILE" "$AUTHELIA_DIR"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
prompt_yn " Manage more users? (y/n):" "n" KEEP_GOING
|
||||||
done
|
done
|
||||||
echo ""
|
}
|
||||||
local SEL=""
|
|
||||||
prompt_text " Select a user by number (blank to cancel):" "" SEL
|
# Per-user action menu (edit/reset-password/2FA/admin/service-access/delete),
|
||||||
if [ -z "$SEL" ] || ! [[ "$SEL" =~ ^[0-9]+$ ]] || [ "$SEL" -lt 1 ] || [ "$SEL" -gt "${#USERNAMES[@]}" ]; then
|
# extracted out of edit_authelia_user() so its caller can drive it once per
|
||||||
log_info "Cancelled."
|
# selected user across a multi-user batch instead of only ever handling one
|
||||||
return 0
|
# user per script invocation.
|
||||||
fi
|
_authelia_manage_one_user() {
|
||||||
local TARGET="${USERNAMES[$((SEL - 1))]}"
|
local TARGET="$1" USERS_FILE="$2" CONFIG_FILE="$3" AUTHELIA_DIR="$4"
|
||||||
|
|
||||||
local CONTINUE="y"
|
local CONTINUE="y"
|
||||||
while [[ "$CONTINUE" =~ ^[Yy]$ ]]; do
|
while [[ "$CONTINUE" =~ ^[Yy]$ ]]; do
|
||||||
|
|||||||
Reference in New Issue
Block a user