storj/satellite/console/consoleauth/sessions.go
Jeremy Wharton faf5b960ff satellite/console/dbcleanup: make chore clean up webapp sessions
The console DB cleanup chore has been extended to remove expired webapp
session records.

Resolves #5893

Change-Id: I455b4933552cfde86817a2ef8f9879dd7b0a121d
2023-06-29 09:53:18 +00:00

40 lines
1.5 KiB
Go

// Copyright (C) 2022 Storj Labs, Inc.
// See LICENSE for copying information.
package consoleauth
import (
"context"
"time"
"storj.io/common/uuid"
)
// WebappSessions is the repository for webapp sessions.
type WebappSessions interface {
// Create creates a webapp session and returns the session info.
Create(ctx context.Context, id, userID uuid.UUID, ip, userAgent string, expires time.Time) (WebappSession, error)
// GetBySessionID gets the session info from the session ID.
GetBySessionID(ctx context.Context, sessionID uuid.UUID) (WebappSession, error)
// GetAllByUserID gets all webapp sessions with userID.
GetAllByUserID(ctx context.Context, userID uuid.UUID) ([]WebappSession, error)
// DeleteBySessionID deletes a webapp session by ID.
DeleteBySessionID(ctx context.Context, sessionID uuid.UUID) error
// DeleteAllByUserID deletes all webapp sessions by user ID.
DeleteAllByUserID(ctx context.Context, userID uuid.UUID) (int64, error)
// UpdateExpiration updates the expiration time of the session.
UpdateExpiration(ctx context.Context, sessionID uuid.UUID, expiresAt time.Time) error
// DeleteExpired deletes all sessions that have expired before the provided timestamp.
DeleteExpired(ctx context.Context, now time.Time, asOfSystemTimeInterval time.Duration, pageSize int) error
}
// WebappSession represents a session on the satellite web app.
type WebappSession struct {
ID uuid.UUID
UserID uuid.UUID
Address string
UserAgent string
Status int
ExpiresAt time.Time
}