@@ -17,6 +17,7 @@ package ram
1717
1818import (
1919 "context"
20+ ims20190815 "github.com/alibabacloud-go/ims-20190815/v4/client"
2021 "github.com/aliyun/alibaba-cloud-sdk-go/services/ram"
2122 "github.com/cloudrec/alicloud/collector"
2223 "github.com/core-sdk/constant"
@@ -43,7 +44,7 @@ func GetRAMUserResource() schema.Resource {
4344type UserDetail struct {
4445 User ram.User
4546 UserDetail ram.User
46- LoginProfile ram. LoginProfile
47+ LoginProfile * ims20190815. GetLoginProfileResponseBodyLoginProfile
4748 Groups []ram.Group
4849 ConsoleLogin bool
4950 Policies []PolicyDetail
@@ -64,6 +65,7 @@ type AccessKeyDetail struct {
6465
6566func GetUserDetail (ctx context.Context , service schema.ServiceInterface , res chan <- any ) error {
6667 cli := service .(* collector.Services ).RAM
68+ imsCli := service .(* collector.Services ).IMS
6769
6870 request := ram .CreateListUsersRequest ()
6971 request .Scheme = "https"
@@ -80,13 +82,14 @@ func GetUserDetail(ctx context.Context, service schema.ServiceInterface, res cha
8082 User : i ,
8183 UserDetail : getUser (ctx , cli , i .UserName ),
8284 //Groups: groups,
83- LoginProfile : getLoginProfile (ctx , cli , i .UserName ),
85+ LoginProfile : getLoginProfile (ctx , imsCli , i .UserName ),
8486 Policies : listAttachedPolicies (ctx , cli , i .UserName , []ram.Group {}),
8587 AccessKeys : accessKeys ,
8688 ExistActiveAccessKey : existActiveAccessKey (accessKeys ),
8789 }
8890
89- d .ConsoleLogin = d .LoginProfile .CreateDate != ""
91+ d .ConsoleLogin = d .LoginProfile != nil && d .LoginProfile .Status != nil && * d .LoginProfile .Status == "Active"
92+
9093 res <- d
9194 }
9295 if ! response .IsTruncated {
@@ -142,16 +145,17 @@ func getUser(ctx context.Context, cli *ram.Client, username string) (user ram.Us
142145 return response .User
143146}
144147
145- func getLoginProfile (ctx context.Context , cli * ram.Client , username string ) (LoginProfile ram.LoginProfile ) {
146- request := ram .CreateGetLoginProfileRequest ()
147- request .Scheme = "https"
148- request .UserName = username
148+ func getLoginProfile (ctx context.Context , cli * ims20190815.Client , username string ) (LoginProfile * ims20190815.GetLoginProfileResponseBodyLoginProfile ) {
149+ request := & ims20190815.GetLoginProfileRequest {
150+ UserPrincipalName : & username ,
151+ }
152+
149153 response , err := cli .GetLoginProfile (request )
150154 if err != nil {
151155 log .CtxLogger (ctx ).Warn ("GetLoginProfile error" , zap .Error (err ))
152156 return
153157 }
154- return response .LoginProfile
158+ return response .Body . LoginProfile
155159}
156160
157161// query ram user policies
0 commit comments