From c8bd3436973f2c6f742ab9d4189e686f58bfa412 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 30 Mar 2014 01:57:10 -0400 Subject: check if password is locked for idempotency sake --- Property/User.hs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'Property/User.hs') diff --git a/Property/User.hs b/Property/User.hs index 47d6fb5b..3cd74964 100644 --- a/Property/User.hs +++ b/Property/User.hs @@ -7,6 +7,7 @@ import Data.Maybe import Property import Utility.SafeCommand import Utility.Exception +import Utility.Process type UserName = String @@ -25,10 +26,16 @@ nuked user = check (isJust <$> homedir user) $ cmdProperty "userdel" ] lockedPassword :: UserName -> Property -lockedPassword user = cmdProperty "passwd" +lockedPassword user = check (not <$> isLockedPassword user) $ cmdProperty "passwd" [ Param "--lock" , Param user ] +isLockedPassword :: UserName -> IO Bool +isLockedPassword user = parse . words <$> readProcess "passwd" ["-S", user] + where + parse (_:"L":_) = True + parse _ = False + homedir :: UserName -> IO (Maybe FilePath) homedir user = catchMaybeIO $ homeDirectory <$> getUserEntryForName user -- cgit v1.2.3