Skip to content

Commit 622b524

Browse files
Merge pull request #23 from ConductorOne/luisinasantos/add-success-result
[BB-1546] Return success result on account creation
2 parents 969b322 + dec3653 commit 622b524

File tree

5 files changed

+22
-15
lines changed

5 files changed

+22
-15
lines changed

pkg/connector/group.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ func (g *groupResourceType) Grants(ctx context.Context, resource *v2.Resource, t
107107

108108
for _, user := range users {
109109
userCopy := user
110-
ur, err := userResource(ctx, &userCopy, resource.Id)
110+
ur, err := userResource(&userCopy, resource.Id)
111111
if err != nil {
112112
return nil, "", nil, err
113113
}

pkg/connector/license.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ func (l *licenseResourceType) Grants(ctx context.Context, resource *v2.Resource,
9797
var rv []*v2.Grant
9898
for _, user := range users {
9999
userCopy := user
100-
ur, err := userResource(ctx, &userCopy, resource.Id)
100+
ur, err := userResource(&userCopy, resource.Id)
101101
if err != nil {
102102
return nil, "", nil, err
103103
}

pkg/connector/site.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ func (o *siteResourceType) Grants(ctx context.Context, resource *v2.Resource, pt
113113
)
114114
}
115115
userCopy := user
116-
ur, err := userResource(ctx, &userCopy, resource.Id)
116+
ur, err := userResource(&userCopy, resource.Id)
117117
if err != nil {
118118
return nil, "", nil, err
119119
}

pkg/connector/user.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func (o *userResourceType) ResourceType(_ context.Context) *v2.ResourceType {
2525
}
2626

2727
// Create a new connector resource for a Tableau user.
28-
func userResource(ctx context.Context, user *tableau.User, parentResourceID *v2.ResourceId) (*v2.Resource, error) {
28+
func userResource(user *tableau.User, parentResourceID *v2.ResourceId) (*v2.Resource, error) {
2929
names := strings.SplitN(user.FullName, " ", 2)
3030
var firstName, lastName string
3131
switch len(names) {
@@ -77,7 +77,7 @@ func (o *userResourceType) List(ctx context.Context, parentId *v2.ResourceId, to
7777
var rv []*v2.Resource
7878
for _, user := range users {
7979
userCopy := user
80-
ur, err := userResource(ctx, &userCopy, parentId)
80+
ur, err := userResource(&userCopy, parentId)
8181
if err != nil {
8282
return nil, "", nil, err
8383
}
@@ -99,7 +99,6 @@ func (u *userResourceType) CreateAccountCapabilityDetails(ctx context.Context) (
9999
return &v2.CredentialDetailsAccountProvisioning{
100100
SupportedCredentialOptions: []v2.CapabilityDetailCredentialOption{
101101
v2.CapabilityDetailCredentialOption_CAPABILITY_DETAIL_CREDENTIAL_OPTION_NO_PASSWORD,
102-
v2.CapabilityDetailCredentialOption_CAPABILITY_DETAIL_CREDENTIAL_OPTION_RANDOM_PASSWORD,
103102
},
104103
PreferredCredentialOption: v2.CapabilityDetailCredentialOption_CAPABILITY_DETAIL_CREDENTIAL_OPTION_NO_PASSWORD,
105104
}, nil, nil
@@ -122,17 +121,21 @@ func (o *userResourceType) CreateAccount(ctx context.Context, accountInfo *v2.Ac
122121
return nil, nil, nil, fmt.Errorf("baton-tableau: siteRole not found in profile")
123122
}
124123

125-
err := o.client.AddUserToSite(ctx, tableau.CreateUserRequest{
124+
user, err := o.client.AddUserToSite(ctx, tableau.CreateUserRequest{
126125
Email: email,
127126
SiteRole: siteRole,
128127
})
129128
if err != nil {
130129
return nil, nil, nil, fmt.Errorf("baton-tableau: failed to create user %s: %w", email, err)
131130
}
132131

133-
return &v2.CreateAccountResponse_ActionRequiredResult{
134-
Message: fmt.Sprintf("User %s invitation sent successfully", email),
135-
IsCreateAccountResult: true,
132+
resource, err := userResource(user, nil)
133+
if err != nil {
134+
return nil, nil, nil, fmt.Errorf("baton-tableau: failed to parse user resource for %s: %w", email, err)
135+
}
136+
137+
return &v2.CreateAccountResponse_SuccessResult{
138+
Resource: resource,
136139
}, nil, nil, nil
137140
}
138141

pkg/tableau/client.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -394,10 +394,10 @@ func (c *Client) doRequest(ctx context.Context, url string, res interface{}, q u
394394
return nil
395395
}
396396

397-
func (c *Client) AddUserToSite(ctx context.Context, user CreateUserRequest) error {
397+
func (c *Client) AddUserToSite(ctx context.Context, user CreateUserRequest) (*User, error) {
398398
url := fmt.Sprint(c.baseUrl, "/sites/", c.siteId, "/users")
399399
var res struct {
400-
User User `json:"user"`
400+
User *User `json:"user"`
401401
}
402402

403403
requestBody, err := json.Marshal(map[string]interface{}{
@@ -408,14 +408,18 @@ func (c *Client) AddUserToSite(ctx context.Context, user CreateUserRequest) erro
408408
})
409409

410410
if err != nil {
411-
return err
411+
return nil, err
412412
}
413413

414414
if err := c.doRequest(ctx, url, &res, nil, requestBody, http.MethodPost); err != nil {
415-
return err
415+
return nil, err
416416
}
417417

418-
return nil
418+
if res.User == nil {
419+
return nil, fmt.Errorf("failed to create user, no user returned")
420+
}
421+
422+
return res.User, nil
419423
}
420424

421425
func (c *Client) RemoveUserFromSite(ctx context.Context, userId string) error {

0 commit comments

Comments
 (0)