#!/usr/bin/env zsh
# vi: set ft=zsh tw=80 ts=2

function main {
	local username="$1"

	function doesFilevaultUserExist() {
		dscl . -list /Users | grep ${username} >&! /dev/null
	}

	function isFilevaultUserEnabled() {
		fdesetup list | grep ${username} &> /dev/null
	}

	function isFilevaultEnabled() {
		fdesetup status | grep On &> /dev/null
	}

	function allowOnlyFilevaultUserToUnlock() {
		local fdeuser
		for fdeuser in $(fdesetup list | cut -d',' -f1); do
		 [[ ${fdeuser} != ${username} && ${fdeuser} != "admin" ]] && fdesetup remove -user "${fdeuser}"
		done
		return 0
	}

	function disableUser() {
		pwpolicy -u ${username} -disableuser
	}

	[[ $(id -un) == 'root' ]] || { lop -- -e 'This script needs to be run by root. Aborting.'; return }
	isFilevaultEnabled || { lop -- -e 'FileVault is disabled. Aborting.'; return }
	doesFilevaultUserExist && isFilevaultUserEnabled && allowOnlyFilevaultUserToUnlock && disableUser
}

if [[ "${ZSH_EVAL_CONTEXT}" == toplevel || "${ZSH_EVAL_CONTEXT}" == cmdarg ]]; then
	_DIR="${0:A:h}"
	source autoload-zshlib
	main "$@"
fi
