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 }