amazonka-iam-0.0.2: gen/Network/AWS/IAM/UpdateAccountPasswordPolicy.hs
{-# 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 <brendan.g.hay@gmail.com>
-- 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 <brendan.g.hay@gmail.com>
-- Stability : experimental
-- Portability : non-portable (GHC extensions)
-- | Updates the password policy settings for the AWS account.
--
-- For more information about using a password policy, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingPasswordPolicies.html Managing an IAMPassword Policy> in the /Using IAM/ guide.
--
-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html>
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 <http://docs.aws.amazon.com/IAM/latest/UserGuide/HowToPwdIAMUser.html Letting IAM UsersChange Their Own Passwords> 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