Skip to content

Commit

Permalink
Latest improvements, case of removed user in JC working
Browse files Browse the repository at this point in the history
  • Loading branch information
daniellohausen committed Dec 21, 2018
1 parent f2e3129 commit 183fe2d
Showing 1 changed file with 36 additions and 18 deletions.
54 changes: 36 additions & 18 deletions jumpcloud/resource_user.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package jumpcloud
import (
"context"
"fmt"
"net/http"

jcapiv1 "github.com/TheJumpCloud/jcapi-go/v1"
jcapiv2 "github.com/TheJumpCloud/jcapi-go/v2"
Expand Down Expand Up @@ -51,13 +50,22 @@ func resourceUser() *schema.Resource {
}
}

func populateUserPayload(payload *jcapiv1.Systemuserputpost, d *schema.ResourceData) {
payload.Username = d.Get("username").(string)
payload.Email = d.Get("email").(string)
payload.Firstname = d.Get("firstname").(string)
payload.Lastname = d.Get("lastname").(string)
payload.EnableUserPortalMultifactor = d.Get("enable_mfa").(bool)
}
/*
func populateUserPayload(d *schema.ResourceData) *jcapiv1.Systemuserputpost {
//payload.Username = d.Get("username").(string)
//payload.Email = d.Get("email").(string)
// payload.Firstname = d.Get("firstname").(string)
//payload.Lastname = d.Get("lastname").(string)
//payload.EnableUserPortalMultifactor = d.Get("enable_mfa").(bool)
return &jcapiv1.Systemuserputpost{
Username: d.Get("username").(string),
Email: d.Get("email").(string),
Firstname: d.Get("firstname").(string),
Lastname: d.Get("lastname").(string),
EnableUserPortalMultifactor: d.Get("enable_mfa").(bool),
}
}*/

func resourceUserCreate(d *schema.ResourceData, m interface{}) error {
// We receive a v2config but need a v1config to continue. So, we take the only
Expand All @@ -67,7 +75,11 @@ func resourceUserCreate(d *schema.ResourceData, m interface{}) error {
client := jcapiv1.NewAPIClient(configv1)

var payload jcapiv1.Systemuserputpost
populateUserPayload(&payload, d)
payload.Username = d.Get("username").(string)
payload.Email = d.Get("email").(string)
payload.Firstname = d.Get("firstname").(string)
payload.Lastname = d.Get("lastname").(string)
payload.EnableUserPortalMultifactor = d.Get("enable_mfa").(bool)

req := map[string]interface{}{
"body": payload,
Expand All @@ -87,19 +99,19 @@ func resourceUserRead(d *schema.ResourceData, m interface{}) error {
configv1.AddDefaultHeader("x-api-key", m.(*jcapiv2.Configuration).DefaultHeader["x-api-key"])
client := jcapiv1.NewAPIClient(configv1)

res, httpresponse, err := client.SystemusersApi.SystemusersGet(context.TODO(),
res, _, err := client.SystemusersApi.SystemusersGet(context.TODO(),
d.Id(), "", "", nil)

// If the object does not exist in our infrastructure, we unset the ID
// Unfortunately, the http request returns 200 even if the resource does not exist
if err != nil {
if err.Error() == "EOF" {
d.SetId("")
return nil
}
return err
}

// If the object does not exist in our infrastructure
if httpresponse.StatusCode == http.StatusNotFound {
d.SetId("")
return nil
}

d.SetId(res.Id)

if err := d.Set("username", res.Username); err != nil {
Expand All @@ -125,8 +137,14 @@ func resourceUserUpdate(d *schema.ResourceData, m interface{}) error {
configv1.AddDefaultHeader("x-api-key", m.(*jcapiv2.Configuration).DefaultHeader["x-api-key"])
client := jcapiv1.NewAPIClient(configv1)

var payload jcapiv1.Systemuserputpost
populateUserPayload(&payload, d)
// The code fomr the create function is almost identical, but the structure is different :
// jcapiv1.Systemuserput != jcapiv1.Systemuserputpost
var payload jcapiv1.Systemuserput
payload.Username = d.Get("username").(string)
payload.Email = d.Get("email").(string)
payload.Firstname = d.Get("firstname").(string)
payload.Lastname = d.Get("lastname").(string)
payload.EnableUserPortalMultifactor = d.Get("enable_mfa").(bool)

req := map[string]interface{}{
"body": payload,
Expand Down

0 comments on commit 183fe2d

Please sign in to comment.