Fix user switching.

This commit is contained in:
Michael Lipp 2025-02-26 22:33:08 +01:00
parent b4bc0c7b0f
commit 3119349450

View file

@ -50,6 +50,12 @@ doLogin() {
echo >&${con} "504 Won't log in root" echo >&${con} "504 Won't log in root"
return return
fi fi
curUser=$(loginctl -j | jq -r '.[] | select(.tty=="tty1") | .user')
if [ "$curUser" = "$user" ]; then
echo >&${con} "201 User already logged in"
return
fi
attemptLogout
uid=$(id -u ${user} 2>/dev/null) uid=$(id -u ${user} 2>/dev/null)
if [ $? != 0 ]; then if [ $? != 0 ]; then
( flock 200 ( flock 200
@ -69,7 +75,7 @@ doLogin() {
-p ExecStartPre="/usr/bin/chvt 1" \ -p ExecStartPre="/usr/bin/chvt 1" \
dbus-run-session -- gnome-shell --display-server --wayland dbus-run-session -- gnome-shell --display-server --wayland
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo >&${con} "201 User logged in" echo >&${con} "201 User logged in successfully"
else else
echo >&${con} "451 $(<${temperr})" echo >&${con} "451 $(<${temperr})"
fi fi
@ -79,16 +85,16 @@ attemptLogout() {
systemctl status vmop-user-desktop > /dev/null 2>&1 systemctl status vmop-user-desktop > /dev/null 2>&1
if [ $? = 0 ]; then if [ $? = 0 ]; then
systemctl stop vmop-user-desktop systemctl stop vmop-user-desktop
echo >&${con} "102 Desktop stopped"
fi fi
}
doLogout() {
attemptLogout
loginctl -j | jq -r '.[] | select(.tty=="tty1") | .session' \ loginctl -j | jq -r '.[] | select(.tty=="tty1") | .session' \
| while read sid; do | while read sid; do
loginctl kill-session $sid loginctl kill-session $sid
done done
echo >&${con} "102 Desktop stopped"
}
doLogout() {
attemptLogout
echo >&${con} "202 User logged out" echo >&${con} "202 User logged out"
} }