storj/satellite/console/consoleauth/sessions.go
Cameron 772397172f satellite/console: implement WebappSessions db
Create WebappSessions interface in consoleauth package.
Interface implements the DB for webapp_sessions table.

https://github.com/storj/storj/blob/main/docs/blueprints/webapp-session-management.md

Change-Id: Ib56f238c20b58f2877046fc384232add253ee82b
2022-05-16 15:06:04 +00:00

36 lines
1.1 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)
}
// 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
}