github.com/gravitational/teleport/api@v0.0.0-20240507183017-3110591cbafc/types/usertokensecrets.go (about)

     1  /*
     2  Copyright 2020 Gravitational, Inc.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package types
    18  
    19  import (
    20  	"fmt"
    21  	"time"
    22  
    23  	"github.com/gravitational/trace"
    24  )
    25  
    26  // UserTokenSecrets contains user token secrets.
    27  type UserTokenSecrets interface {
    28  	// Resource provides common resource properties
    29  	Resource
    30  	// GetCreated returns Created
    31  	GetCreated() time.Time
    32  	// SetCreated sets Created
    33  	SetCreated(time.Time)
    34  	// GetQRCode returns QRCode
    35  	GetQRCode() []byte
    36  	// SetQRCode sets QRCode
    37  	SetQRCode([]byte)
    38  	// GetOTPKey returns OTP key
    39  	GetOTPKey() string
    40  	// SetOTPKey sets OTP Key
    41  	SetOTPKey(string)
    42  }
    43  
    44  // NewUserTokenSecrets creates an instance of UserTokenSecrets.
    45  func NewUserTokenSecrets(tokenID string) (UserTokenSecrets, error) {
    46  	secrets := UserTokenSecretsV3{
    47  		Metadata: Metadata{
    48  			Name: tokenID,
    49  		},
    50  	}
    51  	if err := secrets.CheckAndSetDefaults(); err != nil {
    52  		return nil, trace.Wrap(err)
    53  	}
    54  	return &secrets, nil
    55  }
    56  
    57  // GetName returns Name
    58  func (u *UserTokenSecretsV3) GetName() string {
    59  	return u.Metadata.Name
    60  }
    61  
    62  // GetCreated returns Created
    63  func (u *UserTokenSecretsV3) GetCreated() time.Time {
    64  	return u.Spec.Created
    65  }
    66  
    67  // SetCreated sets Created
    68  func (u *UserTokenSecretsV3) SetCreated(t time.Time) {
    69  	u.Spec.Created = t
    70  }
    71  
    72  // GetOTPKey returns OTP Key
    73  func (u *UserTokenSecretsV3) GetOTPKey() string {
    74  	return u.Spec.OTPKey
    75  }
    76  
    77  // SetOTPKey sets OTP Key
    78  func (u *UserTokenSecretsV3) SetOTPKey(key string) {
    79  	u.Spec.OTPKey = key
    80  }
    81  
    82  // GetQRCode returns QRCode
    83  func (u *UserTokenSecretsV3) GetQRCode() []byte {
    84  	return []byte(u.Spec.QRCode)
    85  }
    86  
    87  // SetQRCode sets QRCode
    88  func (u *UserTokenSecretsV3) SetQRCode(code []byte) {
    89  	u.Spec.QRCode = string(code)
    90  }
    91  
    92  // Expiry returns object expiry setting
    93  func (u *UserTokenSecretsV3) Expiry() time.Time {
    94  	return u.Metadata.Expiry()
    95  }
    96  
    97  // SetExpiry sets object expiry
    98  func (u *UserTokenSecretsV3) SetExpiry(t time.Time) {
    99  	u.Metadata.SetExpiry(t)
   100  }
   101  
   102  // GetMetadata returns object metadata
   103  func (u *UserTokenSecretsV3) GetMetadata() Metadata {
   104  	return u.Metadata
   105  }
   106  
   107  // GetVersion returns resource version
   108  func (u *UserTokenSecretsV3) GetVersion() string {
   109  	return u.Version
   110  }
   111  
   112  // GetKind returns resource kind
   113  func (u *UserTokenSecretsV3) GetKind() string {
   114  	return u.Kind
   115  }
   116  
   117  // SetName sets the name of the resource
   118  func (u *UserTokenSecretsV3) SetName(name string) {
   119  	u.Metadata.Name = name
   120  }
   121  
   122  // GetResourceID returns resource ID
   123  func (u *UserTokenSecretsV3) GetResourceID() int64 {
   124  	return u.Metadata.ID
   125  }
   126  
   127  // SetResourceID sets resource ID
   128  func (u *UserTokenSecretsV3) SetResourceID(id int64) {
   129  	u.Metadata.ID = id
   130  }
   131  
   132  // GetRevision returns the revision
   133  func (u *UserTokenSecretsV3) GetRevision() string {
   134  	return u.Metadata.GetRevision()
   135  }
   136  
   137  // SetRevision sets the revision
   138  func (u *UserTokenSecretsV3) SetRevision(rev string) {
   139  	u.Metadata.SetRevision(rev)
   140  }
   141  
   142  // GetSubKind returns resource sub kind
   143  func (u *UserTokenSecretsV3) GetSubKind() string {
   144  	return u.SubKind
   145  }
   146  
   147  // SetSubKind sets resource subkind
   148  func (u *UserTokenSecretsV3) SetSubKind(s string) {
   149  	u.SubKind = s
   150  }
   151  
   152  // setStaticFields sets static resource header and metadata fields.
   153  func (u *UserTokenSecretsV3) setStaticFields() {
   154  	u.Kind = KindUserTokenSecrets
   155  	u.Version = V3
   156  }
   157  
   158  // CheckAndSetDefaults checks and set default values for any missing fields.
   159  func (u *UserTokenSecretsV3) CheckAndSetDefaults() error {
   160  	u.setStaticFields()
   161  	if err := u.Metadata.CheckAndSetDefaults(); err != nil {
   162  		return trace.Wrap(err)
   163  	}
   164  	return nil
   165  }
   166  
   167  // String represents a human readable version of the token secrets
   168  func (u *UserTokenSecretsV3) String() string {
   169  	return fmt.Sprintf("UserTokenSecretsV3(tokenID=%v, opt_key=%v, qr_code=%v)", u.GetName(), u.Spec.OTPKey, u.Spec.QRCode)
   170  }