auth

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 15, 2023 License: MPL-2.0 Imports: 3 Imported by: 2

Documentation

Index

Constants

View Source
const (
	CredentialTypeBasic  = CredentialType("BASIC")
	CredentialTypeAPIKey = CredentialType("BEARER")
	CredentialTypeJWT    = CredentialType("JWT")
)
View Source
const (
	NativeRealmName = "native_realm"
	JWTRealmName    = "jwt"
	FileRealmName   = "file_realm"
	NoopRealmName   = "noop_realm"
)
View Source
const (
	RoleSuperUser = RoleType("super_user")
	RoleAdmin     = RoleType("admin")
	RoleMember    = RoleType("member")
	RoleAPI       = RoleType("api")
)

Variables

View Source
var ErrCredentialNotFound = errors.New("credential not found")

Functions

This section is empty.

Types

type AuthenticatedUser

type AuthenticatedUser struct {
	AuthenticatedByRealm string      `json:"-"` // Name of realm that authenticated this user
	Credential           Credential  `json:"credential"`
	Role                 Role        `json:"role"`
	Metadata             interface{} `json:"-"` // Additional data set by the realm that authenticated the user, see the jwt realm for an example

	// TODO(subomi): This are set to interfaces temporarily to work around import cycles.
	User   interface{} `json:"user"`
	APIKey interface{} `json:"api_key"`
}

type Credential

type Credential struct {
	Type     CredentialType `json:"type"`
	Username string         `json:"username"`
	Password string         `json:"password"`
	APIKey   string         `json:"api_key"`
	Token    string         `json:"token"`
}

func (*Credential) String

func (c *Credential) String() string

type CredentialType

type CredentialType string

func (CredentialType) String

func (c CredentialType) String() string

type Realm

type Realm interface {
	GetName() string
	Authenticate(ctx context.Context, cred *Credential) (*AuthenticatedUser, error)
}

type Role

type Role struct {
	Type     RoleType `json:"type" db:"type"`
	Project  string   `json:"project" db:"project"`
	Endpoint string   `json:"endpoint,omitempty" db:"endpoint"`
}

Role represents the permission a user is given, if the Type is RoleSuperUser, Then the user will have access to everything regardless of the value of Project.

func (*Role) HasEndpoint added in v0.8.0

func (r *Role) HasEndpoint(endpointID string) bool

func (*Role) HasProject added in v0.8.0

func (r *Role) HasProject(projectID string) bool

func (*Role) Validate

func (r *Role) Validate(credType string) error

type RoleType

type RoleType string

func (RoleType) Is

func (r RoleType) Is(rt RoleType) bool

func (RoleType) IsValid

func (r RoleType) IsValid() bool

func (RoleType) String

func (r RoleType) String() string

Directories

Path Synopsis
realm
jwt

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL