Help us shape the future of Go! Take the 2026 Go Developer Survey

session

package
v2.10.0 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2026 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrUnauthorized when a session request is unauthorized
	// usually due to password mismatch
	ErrUnauthorized = &errors.Error{
		Code: errors.EUnauthorized,
		Msg:  "unauthorized access",
	}
)

Functions

func DecodeCookieSession added in v2.1.0

func DecodeCookieSession(ctx context.Context, r *http.Request) (string, error)

func SetCookieSession

func SetCookieSession(key string, r *http.Request)

SetCookieSession adds a cookie for the session to an http request

Types

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service implements the influxdb.SessionService interface and handles communication between session and the necessary user and urm services

func NewService

func NewService(store *Storage, userService influxdb.UserService, urmService influxdb.UserResourceMappingService, authSvc influxdb.AuthorizationService, opts ...ServiceOption) *Service

NewService creates a new session service

func (*Service) CreateSession

func (s *Service) CreateSession(ctx context.Context, user string) (*influxdb.Session, error)

CreateSession

func (*Service) ExpireSession

func (s *Service) ExpireSession(ctx context.Context, key string) error

ExpireSession removes a session from the system

func (*Service) FindSession

func (s *Service) FindSession(ctx context.Context, key string) (*influxdb.Session, error)

FindSession finds a session based on the session key

func (*Service) RenewSession

func (s *Service) RenewSession(ctx context.Context, session *influxdb.Session, newExpiration time.Time) error

RenewSession update the sessions expiration time

func (*Service) WithMaxPermissionFunc

func (s *Service) WithMaxPermissionFunc(fn func(context.Context) bool)

WithMaxPermissionFunc sets the useAuthorizationsForMaxPermissions function which can trigger whether or not max permissions uses the users authorizations to derive maximum permissions.

type ServiceOption

type ServiceOption func(*Service)

ServiceOption is a functional option for configuring a *Service

func WithIDGenerator

func WithIDGenerator(gen platform.IDGenerator) ServiceOption

WithIDGenerator overrides the default ID generator with the one provided to this function when called on a *Service

func WithSessionLength

func WithSessionLength(length time.Duration) ServiceOption

WithSessionLength configures the length of the session with the provided duration when the resulting option is called on a *Service.

func WithTokenGenerator

func WithTokenGenerator(gen influxdb.TokenGenerator) ServiceOption

WithTokenGenerator overrides the default token generator with the one provided to this function when called on a *Service

type SessionHandler

type SessionHandler struct {
	chi.Router
	// contains filtered or unexported fields
}

SessionHandler represents an HTTP API handler for authorizations.

func NewSessionHandler

func NewSessionHandler(log *zap.Logger, sessionSvc influxdb.SessionService, userSvc influxdb.UserService, passwordsSvc influxdb.PasswordsService) *SessionHandler

NewSessionHandler returns a new instance of SessionHandler.

func (SessionHandler) SignInResourceHandler

func (h SessionHandler) SignInResourceHandler() *resourceHandler

SignInResourceHandler allows us to return 2 different resource handler for the appropriate mounting location

func (SessionHandler) SignOutResourceHandler

func (h SessionHandler) SignOutResourceHandler() *resourceHandler

SignOutResourceHandler allows us to return 2 different resource handler for the appropriate mounting location

type SessionLogger

type SessionLogger struct {
	// contains filtered or unexported fields
}

SessionLogger is a logger service middleware for sessions

func NewSessionLogger

func NewSessionLogger(log *zap.Logger, s influxdb.SessionService) *SessionLogger

NewSessionLogger returns a logging service middleware for the User Service.

func (*SessionLogger) CreateSession

func (l *SessionLogger) CreateSession(ctx context.Context, user string) (s *influxdb.Session, err error)

CreateSession calls the underlying session service and logs the results of the request

func (*SessionLogger) ExpireSession

func (l *SessionLogger) ExpireSession(ctx context.Context, key string) (err error)

ExpireSession calls the underlying session service and logs the results of the request

func (*SessionLogger) FindSession

func (l *SessionLogger) FindSession(ctx context.Context, key string) (session *influxdb.Session, err error)

FindSession calls the underlying session service and logs the results of the request

func (*SessionLogger) RenewSession

func (l *SessionLogger) RenewSession(ctx context.Context, session *influxdb.Session, newExpiration time.Time) (err error)

RenewSession calls the underlying session service and logs the results of the request

type SessionMetrics

type SessionMetrics struct {
	// contains filtered or unexported fields
}

SessionMetrics is a metrics middleware system for the session service

func NewSessionMetrics

func NewSessionMetrics(reg prometheus.Registerer, s influxdb.SessionService) *SessionMetrics

NewSessionMetrics creates a new session metrics middleware

func (*SessionMetrics) CreateSession

func (m *SessionMetrics) CreateSession(ctx context.Context, user string) (s *influxdb.Session, err error)

CreateSession calls the underlying session service and tracks RED metrics for the call

func (*SessionMetrics) ExpireSession

func (m *SessionMetrics) ExpireSession(ctx context.Context, key string) (err error)

ExpireSession calls the underlying session service and tracks RED metrics for the call

func (*SessionMetrics) FindSession

func (m *SessionMetrics) FindSession(ctx context.Context, key string) (session *influxdb.Session, err error)

FindSession calls the underlying session service and tracks RED metrics for the call

func (*SessionMetrics) RenewSession

func (m *SessionMetrics) RenewSession(ctx context.Context, session *influxdb.Session, newExpiration time.Time) (err error)

RenewSession calls the underlying session service and tracks RED metrics for the call

type Storage

type Storage struct {
	// contains filtered or unexported fields
}

Storage is a store translation layer between the data storage unit and the service layer.

func NewStorage

func NewStorage(s Store) *Storage

NewStorage creates a new storage system

func (*Storage) CreateSession

func (s *Storage) CreateSession(ctx context.Context, session *influxdb.Session) error

CreateSession creates a new session

func (*Storage) DeleteSession

func (s *Storage) DeleteSession(ctx context.Context, id platform.ID) error

DeleteSession removes the session and index from storage

func (*Storage) FindSessionByID

func (s *Storage) FindSessionByID(ctx context.Context, id platform.ID) (*influxdb.Session, error)

FindSessionByID use a provided id to retrieve the stored session

func (*Storage) FindSessionByKey

func (s *Storage) FindSessionByKey(ctx context.Context, key string) (*influxdb.Session, error)

FindSessionByKey use a given key to retrieve the stored session

func (*Storage) RefreshSession

func (s *Storage) RefreshSession(ctx context.Context, id platform.ID, expireAt time.Time) error

RefreshSession updates the expiration time of a session.

type Store

type Store interface {
	Set(key, val string, expireAt time.Time) error
	Get(key string) (string, error)
	Delete(key string) error
	ExpireAt(key string, expireAt time.Time) error
}

Jump to

Keyboard shortcuts

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