mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-30 18:17:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright (c) HashiCorp, Inc.
 | |
| // SPDX-License-Identifier: MPL-2.0
 | |
| 
 | |
| package logical
 | |
| 
 | |
| import (
 | |
| 	"time"
 | |
| )
 | |
| 
 | |
| // LeaseOptions is an embeddable struct to capture common lease
 | |
| // settings between a Secret and Auth
 | |
| type LeaseOptions struct {
 | |
| 	// TTL is the duration that this secret is valid for. Vault
 | |
| 	// will automatically revoke it after the duration.
 | |
| 	TTL time.Duration `json:"lease"`
 | |
| 
 | |
| 	// MaxTTL is the maximum duration that this secret is valid for.
 | |
| 	MaxTTL time.Duration `json:"max_ttl"`
 | |
| 
 | |
| 	// Renewable, if true, means that this secret can be renewed.
 | |
| 	Renewable bool `json:"renewable"`
 | |
| 
 | |
| 	// Increment will be the lease increment that the user requested.
 | |
| 	// This is only available on a Renew operation and has no effect
 | |
| 	// when returning a response.
 | |
| 	Increment time.Duration `json:"-"`
 | |
| 
 | |
| 	// IssueTime is the time of issue for the original lease. This is
 | |
| 	// only available on Renew and Revoke operations and has no effect when returning
 | |
| 	// a response. It can be used to enforce maximum lease periods by
 | |
| 	// a logical backend.
 | |
| 	IssueTime time.Time `json:"-"`
 | |
| }
 | |
| 
 | |
| // LeaseEnabled checks if leasing is enabled
 | |
| func (l *LeaseOptions) LeaseEnabled() bool {
 | |
| 	return l.TTL > 0
 | |
| }
 | |
| 
 | |
| // LeaseTotal is the lease duration with a guard against a negative TTL
 | |
| func (l *LeaseOptions) LeaseTotal() time.Duration {
 | |
| 	if l.TTL <= 0 {
 | |
| 		return 0
 | |
| 	}
 | |
| 
 | |
| 	return l.TTL
 | |
| }
 | |
| 
 | |
| // ExpirationTime computes the time until expiration including the grace period
 | |
| func (l *LeaseOptions) ExpirationTime() time.Time {
 | |
| 	var expireTime time.Time
 | |
| 	if l.LeaseEnabled() {
 | |
| 		expireTime = time.Now().Add(l.LeaseTotal())
 | |
| 	}
 | |
| 	return expireTime
 | |
| }
 | 
