{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.CognitoIdentityProvider.AdminGetUser
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets the specified user by user name in a user pool as an administrator.
-- Works on any user.
--
-- Calling this action requires developer credentials.
module Amazonka.CognitoIdentityProvider.AdminGetUser
  ( -- * Creating a Request
    AdminGetUser (..),
    newAdminGetUser,

    -- * Request Lenses
    adminGetUser_userPoolId,
    adminGetUser_username,

    -- * Destructuring the Response
    AdminGetUserResponse (..),
    newAdminGetUserResponse,

    -- * Response Lenses
    adminGetUserResponse_enabled,
    adminGetUserResponse_mfaOptions,
    adminGetUserResponse_preferredMfaSetting,
    adminGetUserResponse_userAttributes,
    adminGetUserResponse_userCreateDate,
    adminGetUserResponse_userLastModifiedDate,
    adminGetUserResponse_userMFASettingList,
    adminGetUserResponse_userStatus,
    adminGetUserResponse_httpStatus,
    adminGetUserResponse_username,
  )
where

import Amazonka.CognitoIdentityProvider.Types
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | Represents the request to get the specified user as an administrator.
--
-- /See:/ 'newAdminGetUser' smart constructor.
data AdminGetUser = AdminGetUser'
  { -- | The user pool ID for the user pool where you want to get information
    -- about the user.
    AdminGetUser -> Text
userPoolId :: Prelude.Text,
    -- | The user name of the user you want to retrieve.
    AdminGetUser -> Sensitive Text
username :: Data.Sensitive Prelude.Text
  }
  deriving (AdminGetUser -> AdminGetUser -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AdminGetUser -> AdminGetUser -> Bool
$c/= :: AdminGetUser -> AdminGetUser -> Bool
== :: AdminGetUser -> AdminGetUser -> Bool
$c== :: AdminGetUser -> AdminGetUser -> Bool
Prelude.Eq, Int -> AdminGetUser -> ShowS
[AdminGetUser] -> ShowS
AdminGetUser -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AdminGetUser] -> ShowS
$cshowList :: [AdminGetUser] -> ShowS
show :: AdminGetUser -> String
$cshow :: AdminGetUser -> String
showsPrec :: Int -> AdminGetUser -> ShowS
$cshowsPrec :: Int -> AdminGetUser -> ShowS
Prelude.Show, forall x. Rep AdminGetUser x -> AdminGetUser
forall x. AdminGetUser -> Rep AdminGetUser x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AdminGetUser x -> AdminGetUser
$cfrom :: forall x. AdminGetUser -> Rep AdminGetUser x
Prelude.Generic)

-- |
-- Create a value of 'AdminGetUser' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'userPoolId', 'adminGetUser_userPoolId' - The user pool ID for the user pool where you want to get information
-- about the user.
--
-- 'username', 'adminGetUser_username' - The user name of the user you want to retrieve.
newAdminGetUser ::
  -- | 'userPoolId'
  Prelude.Text ->
  -- | 'username'
  Prelude.Text ->
  AdminGetUser
newAdminGetUser :: Text -> Text -> AdminGetUser
newAdminGetUser Text
pUserPoolId_ Text
pUsername_ =
  AdminGetUser'
    { $sel:userPoolId:AdminGetUser' :: Text
userPoolId = Text
pUserPoolId_,
      $sel:username:AdminGetUser' :: Sensitive Text
username = forall a. Iso' (Sensitive a) a
Data._Sensitive forall t b. AReview t b -> b -> t
Lens.# Text
pUsername_
    }

-- | The user pool ID for the user pool where you want to get information
-- about the user.
adminGetUser_userPoolId :: Lens.Lens' AdminGetUser Prelude.Text
adminGetUser_userPoolId :: Lens' AdminGetUser Text
adminGetUser_userPoolId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AdminGetUser' {Text
userPoolId :: Text
$sel:userPoolId:AdminGetUser' :: AdminGetUser -> Text
userPoolId} -> Text
userPoolId) (\s :: AdminGetUser
s@AdminGetUser' {} Text
a -> AdminGetUser
s {$sel:userPoolId:AdminGetUser' :: Text
userPoolId = Text
a} :: AdminGetUser)

-- | The user name of the user you want to retrieve.
adminGetUser_username :: Lens.Lens' AdminGetUser Prelude.Text
adminGetUser_username :: Lens' AdminGetUser Text
adminGetUser_username = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AdminGetUser' {Sensitive Text
username :: Sensitive Text
$sel:username:AdminGetUser' :: AdminGetUser -> Sensitive Text
username} -> Sensitive Text
username) (\s :: AdminGetUser
s@AdminGetUser' {} Sensitive Text
a -> AdminGetUser
s {$sel:username:AdminGetUser' :: Sensitive Text
username = Sensitive Text
a} :: AdminGetUser) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a. Iso' (Sensitive a) a
Data._Sensitive

instance Core.AWSRequest AdminGetUser where
  type AWSResponse AdminGetUser = AdminGetUserResponse
  request :: (Service -> Service) -> AdminGetUser -> Request AdminGetUser
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy AdminGetUser
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse AdminGetUser)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Bool
-> Maybe [MFAOptionType]
-> Maybe Text
-> Maybe [AttributeType]
-> Maybe POSIX
-> Maybe POSIX
-> Maybe [Text]
-> Maybe UserStatusType
-> Int
-> Sensitive Text
-> AdminGetUserResponse
AdminGetUserResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Enabled")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"MFAOptions" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"PreferredMfaSetting")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"UserAttributes" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"UserCreateDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"UserLastModifiedDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"UserMFASettingList"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"UserStatus")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"Username")
      )

instance Prelude.Hashable AdminGetUser where
  hashWithSalt :: Int -> AdminGetUser -> Int
hashWithSalt Int
_salt AdminGetUser' {Text
Sensitive Text
username :: Sensitive Text
userPoolId :: Text
$sel:username:AdminGetUser' :: AdminGetUser -> Sensitive Text
$sel:userPoolId:AdminGetUser' :: AdminGetUser -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
userPoolId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Sensitive Text
username

instance Prelude.NFData AdminGetUser where
  rnf :: AdminGetUser -> ()
rnf AdminGetUser' {Text
Sensitive Text
username :: Sensitive Text
userPoolId :: Text
$sel:username:AdminGetUser' :: AdminGetUser -> Sensitive Text
$sel:userPoolId:AdminGetUser' :: AdminGetUser -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
userPoolId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Sensitive Text
username

instance Data.ToHeaders AdminGetUser where
  toHeaders :: AdminGetUser -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"AWSCognitoIdentityProviderService.AdminGetUser" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON AdminGetUser where
  toJSON :: AdminGetUser -> Value
toJSON AdminGetUser' {Text
Sensitive Text
username :: Sensitive Text
userPoolId :: Text
$sel:username:AdminGetUser' :: AdminGetUser -> Sensitive Text
$sel:userPoolId:AdminGetUser' :: AdminGetUser -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just (Key
"UserPoolId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
userPoolId),
            forall a. a -> Maybe a
Prelude.Just (Key
"Username" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Sensitive Text
username)
          ]
      )

instance Data.ToPath AdminGetUser where
  toPath :: AdminGetUser -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery AdminGetUser where
  toQuery :: AdminGetUser -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | Represents the response from the server from the request to get the
-- specified user as an administrator.
--
-- /See:/ 'newAdminGetUserResponse' smart constructor.
data AdminGetUserResponse = AdminGetUserResponse'
  { -- | Indicates that the status is @enabled@.
    AdminGetUserResponse -> Maybe Bool
enabled :: Prelude.Maybe Prelude.Bool,
    -- | /This response parameter is no longer supported./ It provides
    -- information only about SMS MFA configurations. It doesn\'t provide
    -- information about time-based one-time password (TOTP) software token MFA
    -- configurations. To look up information about either type of MFA
    -- configuration, use UserMFASettingList instead.
    AdminGetUserResponse -> Maybe [MFAOptionType]
mfaOptions :: Prelude.Maybe [MFAOptionType],
    -- | The user\'s preferred MFA setting.
    AdminGetUserResponse -> Maybe Text
preferredMfaSetting :: Prelude.Maybe Prelude.Text,
    -- | An array of name-value pairs representing user attributes.
    AdminGetUserResponse -> Maybe [AttributeType]
userAttributes :: Prelude.Maybe [AttributeType],
    -- | The date the user was created.
    AdminGetUserResponse -> Maybe POSIX
userCreateDate :: Prelude.Maybe Data.POSIX,
    -- | The date the user was last modified.
    AdminGetUserResponse -> Maybe POSIX
userLastModifiedDate :: Prelude.Maybe Data.POSIX,
    -- | The MFA options that are activated for the user. The possible values in
    -- this list are @SMS_MFA@ and @SOFTWARE_TOKEN_MFA@.
    AdminGetUserResponse -> Maybe [Text]
userMFASettingList :: Prelude.Maybe [Prelude.Text],
    -- | The user status. Can be one of the following:
    --
    -- -   UNCONFIRMED - User has been created but not confirmed.
    --
    -- -   CONFIRMED - User has been confirmed.
    --
    -- -   ARCHIVED - User is no longer active.
    --
    -- -   UNKNOWN - User status isn\'t known.
    --
    -- -   RESET_REQUIRED - User is confirmed, but the user must request a code
    --     and reset their password before they can sign in.
    --
    -- -   FORCE_CHANGE_PASSWORD - The user is confirmed and the user can sign
    --     in using a temporary password, but on first sign-in, the user must
    --     change their password to a new value before doing anything else.
    AdminGetUserResponse -> Maybe UserStatusType
userStatus :: Prelude.Maybe UserStatusType,
    -- | The response's http status code.
    AdminGetUserResponse -> Int
httpStatus :: Prelude.Int,
    -- | The user name of the user about whom you\'re receiving information.
    AdminGetUserResponse -> Sensitive Text
username :: Data.Sensitive Prelude.Text
  }
  deriving (AdminGetUserResponse -> AdminGetUserResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AdminGetUserResponse -> AdminGetUserResponse -> Bool
$c/= :: AdminGetUserResponse -> AdminGetUserResponse -> Bool
== :: AdminGetUserResponse -> AdminGetUserResponse -> Bool
$c== :: AdminGetUserResponse -> AdminGetUserResponse -> Bool
Prelude.Eq, Int -> AdminGetUserResponse -> ShowS
[AdminGetUserResponse] -> ShowS
AdminGetUserResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AdminGetUserResponse] -> ShowS
$cshowList :: [AdminGetUserResponse] -> ShowS
show :: AdminGetUserResponse -> String
$cshow :: AdminGetUserResponse -> String
showsPrec :: Int -> AdminGetUserResponse -> ShowS
$cshowsPrec :: Int -> AdminGetUserResponse -> ShowS
Prelude.Show, forall x. Rep AdminGetUserResponse x -> AdminGetUserResponse
forall x. AdminGetUserResponse -> Rep AdminGetUserResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AdminGetUserResponse x -> AdminGetUserResponse
$cfrom :: forall x. AdminGetUserResponse -> Rep AdminGetUserResponse x
Prelude.Generic)

-- |
-- Create a value of 'AdminGetUserResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'enabled', 'adminGetUserResponse_enabled' - Indicates that the status is @enabled@.
--
-- 'mfaOptions', 'adminGetUserResponse_mfaOptions' - /This response parameter is no longer supported./ It provides
-- information only about SMS MFA configurations. It doesn\'t provide
-- information about time-based one-time password (TOTP) software token MFA
-- configurations. To look up information about either type of MFA
-- configuration, use UserMFASettingList instead.
--
-- 'preferredMfaSetting', 'adminGetUserResponse_preferredMfaSetting' - The user\'s preferred MFA setting.
--
-- 'userAttributes', 'adminGetUserResponse_userAttributes' - An array of name-value pairs representing user attributes.
--
-- 'userCreateDate', 'adminGetUserResponse_userCreateDate' - The date the user was created.
--
-- 'userLastModifiedDate', 'adminGetUserResponse_userLastModifiedDate' - The date the user was last modified.
--
-- 'userMFASettingList', 'adminGetUserResponse_userMFASettingList' - The MFA options that are activated for the user. The possible values in
-- this list are @SMS_MFA@ and @SOFTWARE_TOKEN_MFA@.
--
-- 'userStatus', 'adminGetUserResponse_userStatus' - The user status. Can be one of the following:
--
-- -   UNCONFIRMED - User has been created but not confirmed.
--
-- -   CONFIRMED - User has been confirmed.
--
-- -   ARCHIVED - User is no longer active.
--
-- -   UNKNOWN - User status isn\'t known.
--
-- -   RESET_REQUIRED - User is confirmed, but the user must request a code
--     and reset their password before they can sign in.
--
-- -   FORCE_CHANGE_PASSWORD - The user is confirmed and the user can sign
--     in using a temporary password, but on first sign-in, the user must
--     change their password to a new value before doing anything else.
--
-- 'httpStatus', 'adminGetUserResponse_httpStatus' - The response's http status code.
--
-- 'username', 'adminGetUserResponse_username' - The user name of the user about whom you\'re receiving information.
newAdminGetUserResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'username'
  Prelude.Text ->
  AdminGetUserResponse
newAdminGetUserResponse :: Int -> Text -> AdminGetUserResponse
newAdminGetUserResponse Int
pHttpStatus_ Text
pUsername_ =
  AdminGetUserResponse'
    { $sel:enabled:AdminGetUserResponse' :: Maybe Bool
enabled = forall a. Maybe a
Prelude.Nothing,
      $sel:mfaOptions:AdminGetUserResponse' :: Maybe [MFAOptionType]
mfaOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:preferredMfaSetting:AdminGetUserResponse' :: Maybe Text
preferredMfaSetting = forall a. Maybe a
Prelude.Nothing,
      $sel:userAttributes:AdminGetUserResponse' :: Maybe [AttributeType]
userAttributes = forall a. Maybe a
Prelude.Nothing,
      $sel:userCreateDate:AdminGetUserResponse' :: Maybe POSIX
userCreateDate = forall a. Maybe a
Prelude.Nothing,
      $sel:userLastModifiedDate:AdminGetUserResponse' :: Maybe POSIX
userLastModifiedDate = forall a. Maybe a
Prelude.Nothing,
      $sel:userMFASettingList:AdminGetUserResponse' :: Maybe [Text]
userMFASettingList = forall a. Maybe a
Prelude.Nothing,
      $sel:userStatus:AdminGetUserResponse' :: Maybe UserStatusType
userStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:AdminGetUserResponse' :: Int
httpStatus = Int
pHttpStatus_,
      $sel:username:AdminGetUserResponse' :: Sensitive Text
username = forall a. Iso' (Sensitive a) a
Data._Sensitive forall t b. AReview t b -> b -> t
Lens.# Text
pUsername_
    }

-- | Indicates that the status is @enabled@.
adminGetUserResponse_enabled :: Lens.Lens' AdminGetUserResponse (Prelude.Maybe Prelude.Bool)
adminGetUserResponse_enabled :: Lens' AdminGetUserResponse (Maybe Bool)
adminGetUserResponse_enabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AdminGetUserResponse' {Maybe Bool
enabled :: Maybe Bool
$sel:enabled:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe Bool
enabled} -> Maybe Bool
enabled) (\s :: AdminGetUserResponse
s@AdminGetUserResponse' {} Maybe Bool
a -> AdminGetUserResponse
s {$sel:enabled:AdminGetUserResponse' :: Maybe Bool
enabled = Maybe Bool
a} :: AdminGetUserResponse)

-- | /This response parameter is no longer supported./ It provides
-- information only about SMS MFA configurations. It doesn\'t provide
-- information about time-based one-time password (TOTP) software token MFA
-- configurations. To look up information about either type of MFA
-- configuration, use UserMFASettingList instead.
adminGetUserResponse_mfaOptions :: Lens.Lens' AdminGetUserResponse (Prelude.Maybe [MFAOptionType])
adminGetUserResponse_mfaOptions :: Lens' AdminGetUserResponse (Maybe [MFAOptionType])
adminGetUserResponse_mfaOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AdminGetUserResponse' {Maybe [MFAOptionType]
mfaOptions :: Maybe [MFAOptionType]
$sel:mfaOptions:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe [MFAOptionType]
mfaOptions} -> Maybe [MFAOptionType]
mfaOptions) (\s :: AdminGetUserResponse
s@AdminGetUserResponse' {} Maybe [MFAOptionType]
a -> AdminGetUserResponse
s {$sel:mfaOptions:AdminGetUserResponse' :: Maybe [MFAOptionType]
mfaOptions = Maybe [MFAOptionType]
a} :: AdminGetUserResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The user\'s preferred MFA setting.
adminGetUserResponse_preferredMfaSetting :: Lens.Lens' AdminGetUserResponse (Prelude.Maybe Prelude.Text)
adminGetUserResponse_preferredMfaSetting :: Lens' AdminGetUserResponse (Maybe Text)
adminGetUserResponse_preferredMfaSetting = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AdminGetUserResponse' {Maybe Text
preferredMfaSetting :: Maybe Text
$sel:preferredMfaSetting:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe Text
preferredMfaSetting} -> Maybe Text
preferredMfaSetting) (\s :: AdminGetUserResponse
s@AdminGetUserResponse' {} Maybe Text
a -> AdminGetUserResponse
s {$sel:preferredMfaSetting:AdminGetUserResponse' :: Maybe Text
preferredMfaSetting = Maybe Text
a} :: AdminGetUserResponse)

-- | An array of name-value pairs representing user attributes.
adminGetUserResponse_userAttributes :: Lens.Lens' AdminGetUserResponse (Prelude.Maybe [AttributeType])
adminGetUserResponse_userAttributes :: Lens' AdminGetUserResponse (Maybe [AttributeType])
adminGetUserResponse_userAttributes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AdminGetUserResponse' {Maybe [AttributeType]
userAttributes :: Maybe [AttributeType]
$sel:userAttributes:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe [AttributeType]
userAttributes} -> Maybe [AttributeType]
userAttributes) (\s :: AdminGetUserResponse
s@AdminGetUserResponse' {} Maybe [AttributeType]
a -> AdminGetUserResponse
s {$sel:userAttributes:AdminGetUserResponse' :: Maybe [AttributeType]
userAttributes = Maybe [AttributeType]
a} :: AdminGetUserResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The date the user was created.
adminGetUserResponse_userCreateDate :: Lens.Lens' AdminGetUserResponse (Prelude.Maybe Prelude.UTCTime)
adminGetUserResponse_userCreateDate :: Lens' AdminGetUserResponse (Maybe UTCTime)
adminGetUserResponse_userCreateDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AdminGetUserResponse' {Maybe POSIX
userCreateDate :: Maybe POSIX
$sel:userCreateDate:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe POSIX
userCreateDate} -> Maybe POSIX
userCreateDate) (\s :: AdminGetUserResponse
s@AdminGetUserResponse' {} Maybe POSIX
a -> AdminGetUserResponse
s {$sel:userCreateDate:AdminGetUserResponse' :: Maybe POSIX
userCreateDate = Maybe POSIX
a} :: AdminGetUserResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The date the user was last modified.
adminGetUserResponse_userLastModifiedDate :: Lens.Lens' AdminGetUserResponse (Prelude.Maybe Prelude.UTCTime)
adminGetUserResponse_userLastModifiedDate :: Lens' AdminGetUserResponse (Maybe UTCTime)
adminGetUserResponse_userLastModifiedDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AdminGetUserResponse' {Maybe POSIX
userLastModifiedDate :: Maybe POSIX
$sel:userLastModifiedDate:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe POSIX
userLastModifiedDate} -> Maybe POSIX
userLastModifiedDate) (\s :: AdminGetUserResponse
s@AdminGetUserResponse' {} Maybe POSIX
a -> AdminGetUserResponse
s {$sel:userLastModifiedDate:AdminGetUserResponse' :: Maybe POSIX
userLastModifiedDate = Maybe POSIX
a} :: AdminGetUserResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The MFA options that are activated for the user. The possible values in
-- this list are @SMS_MFA@ and @SOFTWARE_TOKEN_MFA@.
adminGetUserResponse_userMFASettingList :: Lens.Lens' AdminGetUserResponse (Prelude.Maybe [Prelude.Text])
adminGetUserResponse_userMFASettingList :: Lens' AdminGetUserResponse (Maybe [Text])
adminGetUserResponse_userMFASettingList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AdminGetUserResponse' {Maybe [Text]
userMFASettingList :: Maybe [Text]
$sel:userMFASettingList:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe [Text]
userMFASettingList} -> Maybe [Text]
userMFASettingList) (\s :: AdminGetUserResponse
s@AdminGetUserResponse' {} Maybe [Text]
a -> AdminGetUserResponse
s {$sel:userMFASettingList:AdminGetUserResponse' :: Maybe [Text]
userMFASettingList = Maybe [Text]
a} :: AdminGetUserResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The user status. Can be one of the following:
--
-- -   UNCONFIRMED - User has been created but not confirmed.
--
-- -   CONFIRMED - User has been confirmed.
--
-- -   ARCHIVED - User is no longer active.
--
-- -   UNKNOWN - User status isn\'t known.
--
-- -   RESET_REQUIRED - User is confirmed, but the user must request a code
--     and reset their password before they can sign in.
--
-- -   FORCE_CHANGE_PASSWORD - The user is confirmed and the user can sign
--     in using a temporary password, but on first sign-in, the user must
--     change their password to a new value before doing anything else.
adminGetUserResponse_userStatus :: Lens.Lens' AdminGetUserResponse (Prelude.Maybe UserStatusType)
adminGetUserResponse_userStatus :: Lens' AdminGetUserResponse (Maybe UserStatusType)
adminGetUserResponse_userStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AdminGetUserResponse' {Maybe UserStatusType
userStatus :: Maybe UserStatusType
$sel:userStatus:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe UserStatusType
userStatus} -> Maybe UserStatusType
userStatus) (\s :: AdminGetUserResponse
s@AdminGetUserResponse' {} Maybe UserStatusType
a -> AdminGetUserResponse
s {$sel:userStatus:AdminGetUserResponse' :: Maybe UserStatusType
userStatus = Maybe UserStatusType
a} :: AdminGetUserResponse)

-- | The response's http status code.
adminGetUserResponse_httpStatus :: Lens.Lens' AdminGetUserResponse Prelude.Int
adminGetUserResponse_httpStatus :: Lens' AdminGetUserResponse Int
adminGetUserResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AdminGetUserResponse' {Int
httpStatus :: Int
$sel:httpStatus:AdminGetUserResponse' :: AdminGetUserResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: AdminGetUserResponse
s@AdminGetUserResponse' {} Int
a -> AdminGetUserResponse
s {$sel:httpStatus:AdminGetUserResponse' :: Int
httpStatus = Int
a} :: AdminGetUserResponse)

-- | The user name of the user about whom you\'re receiving information.
adminGetUserResponse_username :: Lens.Lens' AdminGetUserResponse Prelude.Text
adminGetUserResponse_username :: Lens' AdminGetUserResponse Text
adminGetUserResponse_username = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AdminGetUserResponse' {Sensitive Text
username :: Sensitive Text
$sel:username:AdminGetUserResponse' :: AdminGetUserResponse -> Sensitive Text
username} -> Sensitive Text
username) (\s :: AdminGetUserResponse
s@AdminGetUserResponse' {} Sensitive Text
a -> AdminGetUserResponse
s {$sel:username:AdminGetUserResponse' :: Sensitive Text
username = Sensitive Text
a} :: AdminGetUserResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a. Iso' (Sensitive a) a
Data._Sensitive

instance Prelude.NFData AdminGetUserResponse where
  rnf :: AdminGetUserResponse -> ()
rnf AdminGetUserResponse' {Int
Maybe Bool
Maybe [Text]
Maybe [AttributeType]
Maybe [MFAOptionType]
Maybe Text
Maybe POSIX
Maybe UserStatusType
Sensitive Text
username :: Sensitive Text
httpStatus :: Int
userStatus :: Maybe UserStatusType
userMFASettingList :: Maybe [Text]
userLastModifiedDate :: Maybe POSIX
userCreateDate :: Maybe POSIX
userAttributes :: Maybe [AttributeType]
preferredMfaSetting :: Maybe Text
mfaOptions :: Maybe [MFAOptionType]
enabled :: Maybe Bool
$sel:username:AdminGetUserResponse' :: AdminGetUserResponse -> Sensitive Text
$sel:httpStatus:AdminGetUserResponse' :: AdminGetUserResponse -> Int
$sel:userStatus:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe UserStatusType
$sel:userMFASettingList:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe [Text]
$sel:userLastModifiedDate:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe POSIX
$sel:userCreateDate:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe POSIX
$sel:userAttributes:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe [AttributeType]
$sel:preferredMfaSetting:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe Text
$sel:mfaOptions:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe [MFAOptionType]
$sel:enabled:AdminGetUserResponse' :: AdminGetUserResponse -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
enabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [MFAOptionType]
mfaOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
preferredMfaSetting
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [AttributeType]
userAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
userCreateDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
userLastModifiedDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
userMFASettingList
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe UserStatusType
userStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Sensitive Text
username