...

Source file src/edge-infra.dev/pkg/edge/auth-proxy/session/session.go

Documentation: edge-infra.dev/pkg/edge/auth-proxy/session

     1  package session
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/gin-contrib/sessions"
     7  
     8  	"edge-infra.dev/pkg/edge/auth-proxy/types"
     9  	"edge-infra.dev/pkg/lib/uuid"
    10  )
    11  
    12  const (
    13  	// DefaultDuration Duration a session should be active.
    14  	DefaultDuration = 15 * time.Minute
    15  )
    16  
    17  // Provider represents a session provider.
    18  type Provider struct {
    19  	session         sessions.Session
    20  	sessionDuration time.Duration
    21  	correlationID   string
    22  }
    23  
    24  // UserInstance represents a session user instance.
    25  type UserInstance struct {
    26  	username      string
    27  	email         string
    28  	token         string
    29  	refreshToken  string
    30  	authType      AuthProvider
    31  	roles         []string
    32  	organization  string
    33  	bannerEdgeIDs []string
    34  }
    35  
    36  // New returns a new session provider.
    37  func New(session sessions.Session, sessionDuration time.Duration, correlationID string) *Provider {
    38  	if sessionDuration == 0 {
    39  		sessionDuration = DefaultDuration
    40  	}
    41  	return &Provider{session: session, sessionDuration: sessionDuration, correlationID: correlationID}
    42  }
    43  
    44  // CreateUserSession saves a new user session.
    45  func (s *Provider) CreateUserSession(usr *UserInstance) error {
    46  	s.session.Set(types.SessionIDField, uuid.New().UUID)
    47  	s.session.Set(types.SessionUsernameField, usr.username)
    48  	s.session.Set(types.SessionEmailField, usr.email)
    49  	s.session.Set(types.SessionTokenField, usr.token)
    50  	s.session.Set(types.SessionRefreshTokenField, usr.refreshToken)
    51  	s.session.Set(types.SessionAuthTypeField, usr.authType.String())
    52  	s.session.Set(types.SessionRolesField, usr.roles)
    53  	s.session.Set(types.SessionOrganizationField, usr.organization)
    54  	s.session.Set(types.SessionBannerEdgeIDs, usr.bannerEdgeIDs)
    55  	createdAt := time.Now().UTC()
    56  	s.session.Set(types.SessionCreationField, createdAt)
    57  	s.session.Set(types.SessionExpirationField, createdAt.Add(s.sessionDuration))
    58  	s.session.Set(types.SessionCorrelationID, s.correlationID)
    59  	return s.session.Save()
    60  }
    61  

View as plain text