49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package session
|
|
|
|
import (
|
|
cred "github.com/hashicorp/boundary/internal/credential"
|
|
)
|
|
|
|
// A StaticCredential represents the relationship between a session, a
|
|
// credential and the purpose of the credential.
|
|
type StaticCredential struct {
|
|
SessionId string `json:"session_id,omitempty" gorm:"primary_key"`
|
|
CredentialPurpose string `json:"credential_purpose,omitempty" gorm:"primary_key"`
|
|
CredentialStaticId string `json:"credential_id,omitempty" gorm:"default:null"`
|
|
|
|
tableName string `gorm:"-"`
|
|
}
|
|
|
|
// NewStaticCredential creates a new in memory Credential representing the
|
|
// relationship between session a credential and the purpose of the credential.
|
|
func NewStaticCredential(id string, purpose cred.Purpose) *StaticCredential {
|
|
return &StaticCredential{
|
|
CredentialStaticId: id,
|
|
CredentialPurpose: string(purpose),
|
|
}
|
|
}
|
|
|
|
func (c *StaticCredential) clone() *StaticCredential {
|
|
return &StaticCredential{
|
|
SessionId: c.SessionId,
|
|
CredentialPurpose: c.CredentialPurpose,
|
|
CredentialStaticId: c.CredentialStaticId,
|
|
}
|
|
}
|
|
|
|
// TableName returns the table name.
|
|
func (c *StaticCredential) TableName() string {
|
|
if c.tableName != "" {
|
|
return c.tableName
|
|
}
|
|
return "session_credential_static"
|
|
}
|
|
|
|
// SetTableName sets the table name.
|
|
func (c *StaticCredential) SetTableName(n string) {
|
|
c.tableName = n
|
|
}
|