#!/bin/sh
# unlock the running session for the authorized user,
# or restart it if the user has changed

export XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0

me="${0##*/}"

# Remove screensaver splash if card is inserted
if [ `id -u` != "0" ]; then
	mate-screensaver-command --poke
fi

# Get smartcard user
newuser="`pkcs11_inspect | grep -v '^DEBUG:' | tail -n1`"
echo "$newuser" >/var/lib/smartcard/user
if [ -z "$newuser" ]; then
	logger -t "$me" "no user found"
	exit 0
else
	logger -t "$me" "'$newuser' card inserted"
fi

# Compare current logged user and smartcard owner
user="$(loginctl list-sessions | awk '$4=="seat0" { print $3 }'|head -n1)"
if [ "$user" != "$newuser" ]; then
	loginctl terminate-user "$user"
fi

# Switch to user login
dm-tool switch-to-user "$newuser"
