Skip to content

Commit

Permalink
Fix for Issue #843 - end_date_relative for application_password (#844)
Browse files Browse the repository at this point in the history
* Simple fix for end_date_relative bug

* Testing locally + logic

* There is no reason these two functions should be this different
  • Loading branch information
Threpio authored Aug 5, 2022
1 parent db22c43 commit cc4d2ce
Showing 1 changed file with 38 additions and 23 deletions.
61 changes: 38 additions & 23 deletions internal/helpers/credentials.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,37 +105,46 @@ func KeyCredentialForResource(d *schema.ResourceData) (*msgraph.KeyCredential, e
keyId = kid
}

var endDate time.Time
if v := d.Get("end_date").(string); v != "" {
credential := msgraph.KeyCredential{
KeyId: utils.String(keyId),
Type: keyType,
Usage: msgraph.KeyCredentialUsageVerify,
Key: utils.String(encodedValue),
}

if v, ok := d.GetOk("start_date"); ok {
startDate, err := time.Parse(time.RFC3339, v.(string))
if err != nil {
return nil, CredentialError{str: fmt.Sprintf("Unable to parse the provided start date %q: %+v", v, err), attr: "start_date"}
}
credential.StartDateTime = &startDate
}

var endDate *time.Time
if v, ok := d.GetOk("end_date"); ok && v.(string) != "" {
var err error
endDate, err = time.Parse(time.RFC3339, v)
expiry, err := time.Parse(time.RFC3339, v.(string))
if err != nil {
return nil, CredentialError{str: fmt.Sprintf("Unable to parse the provided end date %q: %+v", v, err), attr: "end_date"}
}
} else if v := d.Get("end_date_relative").(string); v != "" {
d, err := time.ParseDuration(v)
endDate = &expiry
} else if v, ok := d.GetOk("end_date_relative"); ok && v.(string) != "" {
d, err := time.ParseDuration(v.(string))
if err != nil {
return nil, CredentialError{str: fmt.Sprintf("Unable to parse `end_date_relative` (%q) as a duration", v), attr: "end_date_relative"}
}
endDate = time.Now().Add(d)
} else {
return nil, CredentialError{str: "One of `end_date` or `end_date_relative` must be specified", attr: "end_date"}
}

credential := msgraph.KeyCredential{
KeyId: utils.String(keyId),
Type: keyType,
Usage: msgraph.KeyCredentialUsageVerify,
Key: utils.String(encodedValue),
EndDateTime: &endDate,
if credential.StartDateTime == nil {
expiry := time.Now().Add(d)
endDate = &expiry
} else {
expiry := credential.StartDateTime.Add(d)
endDate = &expiry
}
}

if v, ok := d.GetOk("start_date"); ok {
startDate, err := time.Parse(time.RFC3339, v.(string))
if err != nil {
return nil, CredentialError{str: fmt.Sprintf("Unable to parse the provided start date %q: %+v", v, err), attr: "start_date"}
}
credential.StartDateTime = &startDate
if endDate != nil {
credential.EndDateTime = endDate
}

return &credential, nil
Expand Down Expand Up @@ -170,8 +179,14 @@ func PasswordCredentialForResource(d *schema.ResourceData) (*msgraph.PasswordCre
if err != nil {
return nil, CredentialError{str: fmt.Sprintf("Unable to parse `end_date_relative` (%q) as a duration", v), attr: "end_date_relative"}
}
expiry := time.Now().Add(d)
endDate = &expiry

if credential.StartDateTime == nil {
expiry := time.Now().Add(d)
endDate = &expiry
} else {
expiry := credential.StartDateTime.Add(d)
endDate = &expiry
}
}
if endDate != nil {
credential.EndDateTime = endDate
Expand Down

0 comments on commit cc4d2ce

Please sign in to comment.