{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.IAM.Types.UserDetail -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.IAM.Types.UserDetail where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.IAM.Types.AttachedPermissionsBoundary import Amazonka.IAM.Types.AttachedPolicy import Amazonka.IAM.Types.PolicyDetail import Amazonka.IAM.Types.Tag import qualified Amazonka.Prelude as Prelude -- | Contains information about an IAM user, including all the user\'s -- policies and all the IAM groups the user is in. -- -- This data type is used as a response element in the -- GetAccountAuthorizationDetails operation. -- -- /See:/ 'newUserDetail' smart constructor. data UserDetail = UserDetail' { arn :: Prelude.Maybe Prelude.Text, -- | A list of the managed policies attached to the user. attachedManagedPolicies :: Prelude.Maybe [AttachedPolicy], -- | The date and time, in -- , when the -- user was created. createDate :: Prelude.Maybe Data.ISO8601, -- | A list of IAM groups that the user is in. groupList :: Prelude.Maybe [Prelude.Text], -- | The path to the user. For more information about paths, see -- -- in the /IAM User Guide/. path :: Prelude.Maybe Prelude.Text, -- | The ARN of the policy used to set the permissions boundary for the user. -- -- For more information about permissions boundaries, see -- -- in the /IAM User Guide/. permissionsBoundary :: Prelude.Maybe AttachedPermissionsBoundary, -- | A list of tags that are associated with the user. For more information -- about tagging, see -- -- in the /IAM User Guide/. tags :: Prelude.Maybe [Tag], -- | The stable and unique string identifying the user. For more information -- about IDs, see -- -- in the /IAM User Guide/. userId :: Prelude.Maybe Prelude.Text, -- | The friendly name identifying the user. userName :: Prelude.Maybe Prelude.Text, -- | A list of the inline policies embedded in the user. userPolicyList :: Prelude.Maybe [PolicyDetail] } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'UserDetail' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'arn', 'userDetail_arn' - Undocumented member. -- -- 'attachedManagedPolicies', 'userDetail_attachedManagedPolicies' - A list of the managed policies attached to the user. -- -- 'createDate', 'userDetail_createDate' - The date and time, in -- , when the -- user was created. -- -- 'groupList', 'userDetail_groupList' - A list of IAM groups that the user is in. -- -- 'path', 'userDetail_path' - The path to the user. For more information about paths, see -- -- in the /IAM User Guide/. -- -- 'permissionsBoundary', 'userDetail_permissionsBoundary' - The ARN of the policy used to set the permissions boundary for the user. -- -- For more information about permissions boundaries, see -- -- in the /IAM User Guide/. -- -- 'tags', 'userDetail_tags' - A list of tags that are associated with the user. For more information -- about tagging, see -- -- in the /IAM User Guide/. -- -- 'userId', 'userDetail_userId' - The stable and unique string identifying the user. For more information -- about IDs, see -- -- in the /IAM User Guide/. -- -- 'userName', 'userDetail_userName' - The friendly name identifying the user. -- -- 'userPolicyList', 'userDetail_userPolicyList' - A list of the inline policies embedded in the user. newUserDetail :: UserDetail newUserDetail = UserDetail' { arn = Prelude.Nothing, attachedManagedPolicies = Prelude.Nothing, createDate = Prelude.Nothing, groupList = Prelude.Nothing, path = Prelude.Nothing, permissionsBoundary = Prelude.Nothing, tags = Prelude.Nothing, userId = Prelude.Nothing, userName = Prelude.Nothing, userPolicyList = Prelude.Nothing } -- | Undocumented member. userDetail_arn :: Lens.Lens' UserDetail (Prelude.Maybe Prelude.Text) userDetail_arn = Lens.lens (\UserDetail' {arn} -> arn) (\s@UserDetail' {} a -> s {arn = a} :: UserDetail) -- | A list of the managed policies attached to the user. userDetail_attachedManagedPolicies :: Lens.Lens' UserDetail (Prelude.Maybe [AttachedPolicy]) userDetail_attachedManagedPolicies = Lens.lens (\UserDetail' {attachedManagedPolicies} -> attachedManagedPolicies) (\s@UserDetail' {} a -> s {attachedManagedPolicies = a} :: UserDetail) Prelude.. Lens.mapping Lens.coerced -- | The date and time, in -- , when the -- user was created. userDetail_createDate :: Lens.Lens' UserDetail (Prelude.Maybe Prelude.UTCTime) userDetail_createDate = Lens.lens (\UserDetail' {createDate} -> createDate) (\s@UserDetail' {} a -> s {createDate = a} :: UserDetail) Prelude.. Lens.mapping Data._Time -- | A list of IAM groups that the user is in. userDetail_groupList :: Lens.Lens' UserDetail (Prelude.Maybe [Prelude.Text]) userDetail_groupList = Lens.lens (\UserDetail' {groupList} -> groupList) (\s@UserDetail' {} a -> s {groupList = a} :: UserDetail) Prelude.. Lens.mapping Lens.coerced -- | The path to the user. For more information about paths, see -- -- in the /IAM User Guide/. userDetail_path :: Lens.Lens' UserDetail (Prelude.Maybe Prelude.Text) userDetail_path = Lens.lens (\UserDetail' {path} -> path) (\s@UserDetail' {} a -> s {path = a} :: UserDetail) -- | The ARN of the policy used to set the permissions boundary for the user. -- -- For more information about permissions boundaries, see -- -- in the /IAM User Guide/. userDetail_permissionsBoundary :: Lens.Lens' UserDetail (Prelude.Maybe AttachedPermissionsBoundary) userDetail_permissionsBoundary = Lens.lens (\UserDetail' {permissionsBoundary} -> permissionsBoundary) (\s@UserDetail' {} a -> s {permissionsBoundary = a} :: UserDetail) -- | A list of tags that are associated with the user. For more information -- about tagging, see -- -- in the /IAM User Guide/. userDetail_tags :: Lens.Lens' UserDetail (Prelude.Maybe [Tag]) userDetail_tags = Lens.lens (\UserDetail' {tags} -> tags) (\s@UserDetail' {} a -> s {tags = a} :: UserDetail) Prelude.. Lens.mapping Lens.coerced -- | The stable and unique string identifying the user. For more information -- about IDs, see -- -- in the /IAM User Guide/. userDetail_userId :: Lens.Lens' UserDetail (Prelude.Maybe Prelude.Text) userDetail_userId = Lens.lens (\UserDetail' {userId} -> userId) (\s@UserDetail' {} a -> s {userId = a} :: UserDetail) -- | The friendly name identifying the user. userDetail_userName :: Lens.Lens' UserDetail (Prelude.Maybe Prelude.Text) userDetail_userName = Lens.lens (\UserDetail' {userName} -> userName) (\s@UserDetail' {} a -> s {userName = a} :: UserDetail) -- | A list of the inline policies embedded in the user. userDetail_userPolicyList :: Lens.Lens' UserDetail (Prelude.Maybe [PolicyDetail]) userDetail_userPolicyList = Lens.lens (\UserDetail' {userPolicyList} -> userPolicyList) (\s@UserDetail' {} a -> s {userPolicyList = a} :: UserDetail) Prelude.. Lens.mapping Lens.coerced instance Data.FromXML UserDetail where parseXML x = UserDetail' Prelude.<$> (x Data..@? "Arn") Prelude.<*> ( x Data..@? "AttachedManagedPolicies" Core..!@ Prelude.mempty Prelude.>>= Core.may (Data.parseXMLList "member") ) Prelude.<*> (x Data..@? "CreateDate") Prelude.<*> ( x Data..@? "GroupList" Core..!@ Prelude.mempty Prelude.>>= Core.may (Data.parseXMLList "member") ) Prelude.<*> (x Data..@? "Path") Prelude.<*> (x Data..@? "PermissionsBoundary") Prelude.<*> ( x Data..@? "Tags" Core..!@ Prelude.mempty Prelude.>>= Core.may (Data.parseXMLList "member") ) Prelude.<*> (x Data..@? "UserId") Prelude.<*> (x Data..@? "UserName") Prelude.<*> ( x Data..@? "UserPolicyList" Core..!@ Prelude.mempty Prelude.>>= Core.may (Data.parseXMLList "member") ) instance Prelude.Hashable UserDetail where hashWithSalt _salt UserDetail' {..} = _salt `Prelude.hashWithSalt` arn `Prelude.hashWithSalt` attachedManagedPolicies `Prelude.hashWithSalt` createDate `Prelude.hashWithSalt` groupList `Prelude.hashWithSalt` path `Prelude.hashWithSalt` permissionsBoundary `Prelude.hashWithSalt` tags `Prelude.hashWithSalt` userId `Prelude.hashWithSalt` userName `Prelude.hashWithSalt` userPolicyList instance Prelude.NFData UserDetail where rnf UserDetail' {..} = Prelude.rnf arn `Prelude.seq` Prelude.rnf attachedManagedPolicies `Prelude.seq` Prelude.rnf createDate `Prelude.seq` Prelude.rnf groupList `Prelude.seq` Prelude.rnf path `Prelude.seq` Prelude.rnf permissionsBoundary `Prelude.seq` Prelude.rnf tags `Prelude.seq` Prelude.rnf userId `Prelude.seq` Prelude.rnf userName `Prelude.seq` Prelude.rnf userPolicyList