{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Module : Network.AWS.IAM.UpdateAccountPasswordPolicy -- Copyright : (c) 2013-2014 Brendan Hay -- License : This Source Code Form is subject to the terms of -- the Mozilla Public License, v. 2.0. -- A copy of the MPL can be found in the LICENSE file or -- you can obtain it at http://mozilla.org/MPL/2.0/. -- Maintainer : Brendan Hay -- Stability : experimental -- Portability : non-portable (GHC extensions) -- -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | Updates the password policy settings for the AWS account. -- -- For more information about using a password policy, see in the /Using IAM/ guide. -- -- module Network.AWS.IAM.UpdateAccountPasswordPolicy ( -- * Request UpdateAccountPasswordPolicy -- ** Request constructor , updateAccountPasswordPolicy -- ** Request lenses , uappAllowUsersToChangePassword , uappHardExpiry , uappMaxPasswordAge , uappMinimumPasswordLength , uappPasswordReusePrevention , uappRequireLowercaseCharacters , uappRequireNumbers , uappRequireSymbols , uappRequireUppercaseCharacters -- * Response , UpdateAccountPasswordPolicyResponse -- ** Response constructor , updateAccountPasswordPolicyResponse ) where import Network.AWS.Prelude import Network.AWS.Request.Query import Network.AWS.IAM.Types import qualified GHC.Exts data UpdateAccountPasswordPolicy = UpdateAccountPasswordPolicy { _uappAllowUsersToChangePassword :: Maybe Bool , _uappHardExpiry :: Maybe Bool , _uappMaxPasswordAge :: Maybe Nat , _uappMinimumPasswordLength :: Maybe Nat , _uappPasswordReusePrevention :: Maybe Nat , _uappRequireLowercaseCharacters :: Maybe Bool , _uappRequireNumbers :: Maybe Bool , _uappRequireSymbols :: Maybe Bool , _uappRequireUppercaseCharacters :: Maybe Bool } deriving (Eq, Ord, Show) -- | 'UpdateAccountPasswordPolicy' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'uappAllowUsersToChangePassword' @::@ 'Maybe' 'Bool' -- -- * 'uappHardExpiry' @::@ 'Maybe' 'Bool' -- -- * 'uappMaxPasswordAge' @::@ 'Maybe' 'Natural' -- -- * 'uappMinimumPasswordLength' @::@ 'Maybe' 'Natural' -- -- * 'uappPasswordReusePrevention' @::@ 'Maybe' 'Natural' -- -- * 'uappRequireLowercaseCharacters' @::@ 'Maybe' 'Bool' -- -- * 'uappRequireNumbers' @::@ 'Maybe' 'Bool' -- -- * 'uappRequireSymbols' @::@ 'Maybe' 'Bool' -- -- * 'uappRequireUppercaseCharacters' @::@ 'Maybe' 'Bool' -- updateAccountPasswordPolicy :: UpdateAccountPasswordPolicy updateAccountPasswordPolicy = UpdateAccountPasswordPolicy { _uappMinimumPasswordLength = Nothing , _uappRequireSymbols = Nothing , _uappRequireNumbers = Nothing , _uappRequireUppercaseCharacters = Nothing , _uappRequireLowercaseCharacters = Nothing , _uappAllowUsersToChangePassword = Nothing , _uappMaxPasswordAge = Nothing , _uappPasswordReusePrevention = Nothing , _uappHardExpiry = Nothing } -- | Allows all IAM users in your account to use the AWS Management Console to -- change their own passwords. For more information, see in the /Using IAM/ guide. -- -- Default value: false uappAllowUsersToChangePassword :: Lens' UpdateAccountPasswordPolicy (Maybe Bool) uappAllowUsersToChangePassword = lens _uappAllowUsersToChangePassword (\s a -> s { _uappAllowUsersToChangePassword = a }) -- | Prevents IAM users from setting a new password after their password has -- expired. -- -- Default value: false uappHardExpiry :: Lens' UpdateAccountPasswordPolicy (Maybe Bool) uappHardExpiry = lens _uappHardExpiry (\s a -> s { _uappHardExpiry = a }) -- | The number of days that an IAM user password is valid. The default value of 0 -- means IAM user passwords never expire. -- -- Default value: 0 uappMaxPasswordAge :: Lens' UpdateAccountPasswordPolicy (Maybe Natural) uappMaxPasswordAge = lens _uappMaxPasswordAge (\s a -> s { _uappMaxPasswordAge = a }) . mapping _Nat -- | The minimum number of characters allowed in an IAM user password. -- -- Default value: 6 uappMinimumPasswordLength :: Lens' UpdateAccountPasswordPolicy (Maybe Natural) uappMinimumPasswordLength = lens _uappMinimumPasswordLength (\s a -> s { _uappMinimumPasswordLength = a }) . mapping _Nat -- | Specifies the number of previous passwords that IAM users are prevented from -- reusing. The default value of 0 means IAM users are not prevented from -- reusing previous passwords. -- -- Default value: 0 uappPasswordReusePrevention :: Lens' UpdateAccountPasswordPolicy (Maybe Natural) uappPasswordReusePrevention = lens _uappPasswordReusePrevention (\s a -> s { _uappPasswordReusePrevention = a }) . mapping _Nat -- | Specifies whether IAM user passwords must contain at least one lowercase -- character from the ISO basic Latin alphabet (a to z). -- -- Default value: false uappRequireLowercaseCharacters :: Lens' UpdateAccountPasswordPolicy (Maybe Bool) uappRequireLowercaseCharacters = lens _uappRequireLowercaseCharacters (\s a -> s { _uappRequireLowercaseCharacters = a }) -- | Specifies whether IAM user passwords must contain at least one numeric -- character (0 to 9). -- -- Default value: false uappRequireNumbers :: Lens' UpdateAccountPasswordPolicy (Maybe Bool) uappRequireNumbers = lens _uappRequireNumbers (\s a -> s { _uappRequireNumbers = a }) -- | Specifies whether IAM user passwords must contain at least one of the -- following non-alphanumeric characters: -- -- ! @ # $ % ^ & * ( ) _ + - = [ ] { } | ' -- -- Default value: false uappRequireSymbols :: Lens' UpdateAccountPasswordPolicy (Maybe Bool) uappRequireSymbols = lens _uappRequireSymbols (\s a -> s { _uappRequireSymbols = a }) -- | Specifies whether IAM user passwords must contain at least one uppercase -- character from the ISO basic Latin alphabet (A to Z). -- -- Default value: false uappRequireUppercaseCharacters :: Lens' UpdateAccountPasswordPolicy (Maybe Bool) uappRequireUppercaseCharacters = lens _uappRequireUppercaseCharacters (\s a -> s { _uappRequireUppercaseCharacters = a }) data UpdateAccountPasswordPolicyResponse = UpdateAccountPasswordPolicyResponse deriving (Eq, Ord, Show, Generic) -- | 'UpdateAccountPasswordPolicyResponse' constructor. updateAccountPasswordPolicyResponse :: UpdateAccountPasswordPolicyResponse updateAccountPasswordPolicyResponse = UpdateAccountPasswordPolicyResponse instance ToPath UpdateAccountPasswordPolicy where toPath = const "/" instance ToQuery UpdateAccountPasswordPolicy where toQuery UpdateAccountPasswordPolicy{..} = mconcat [ "AllowUsersToChangePassword" =? _uappAllowUsersToChangePassword , "HardExpiry" =? _uappHardExpiry , "MaxPasswordAge" =? _uappMaxPasswordAge , "MinimumPasswordLength" =? _uappMinimumPasswordLength , "PasswordReusePrevention" =? _uappPasswordReusePrevention , "RequireLowercaseCharacters" =? _uappRequireLowercaseCharacters , "RequireNumbers" =? _uappRequireNumbers , "RequireSymbols" =? _uappRequireSymbols , "RequireUppercaseCharacters" =? _uappRequireUppercaseCharacters ] instance ToHeaders UpdateAccountPasswordPolicy instance AWSRequest UpdateAccountPasswordPolicy where type Sv UpdateAccountPasswordPolicy = IAM type Rs UpdateAccountPasswordPolicy = UpdateAccountPasswordPolicyResponse request = post "UpdateAccountPasswordPolicy" response = nullResponse UpdateAccountPasswordPolicyResponse