# HG changeset patch # User Sascha L. Teichmann # Date 1532099517 -7200 # Node ID 3457a60fb12d06ef379d4f14c198ff3d05a2c962 # Parent 96bb671cdd982659b116990444c9e5c1b531b7d5 Added stub for a persistent session store. diff -r 96bb671cdd98 -r 3457a60fb12d auth/connection.go --- a/auth/connection.go Fri Jul 20 11:09:36 2018 +0200 +++ b/auth/connection.go Fri Jul 20 17:11:57 2018 +0200 @@ -6,6 +6,8 @@ "log" "sync" "time" + + "gemma.intevation.de/gemma/config" ) var ErrNoSuchToken = errors.New("No such token") @@ -19,7 +21,16 @@ Shutdown() error } -var ConnPool ConnectionPool = NewInMemoryConnectionPool() +var ConnPool = func() ConnectionPool { + if config.Config.SessionStore != "" { + cp, err := NewPersistentConnectionPool(config.Config.SessionStore) + if err != nil { + log.Panicf("Error with session store: %v\n", err) + } + return cp + } + return NewInMemoryConnectionPool() +}() const ( maxOpen = 16 diff -r 96bb671cdd98 -r 3457a60fb12d auth/persistent.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/auth/persistent.go Fri Jul 20 17:11:57 2018 +0200 @@ -0,0 +1,49 @@ +package auth + +import ( + "database/sql" + "log" +) + +type PersistentConnectionPool struct { + filename string +} + +func NewPersistentConnectionPool(filename string) (*PersistentConnectionPool, error) { + + log.Println("NewInMemoryConnectionPool: Not implemented, yet.") + pcp := &PersistentConnectionPool{ + filename: filename, + } + return pcp, nil +} + +func (pcp *PersistentConnectionPool) Delete(token string) bool { + log.Println("Delete: Not implemented, yet.") + return false +} + +func (pcp *PersistentConnectionPool) Add(token string, session *Session) *Connection { + log.Println("Add: Not implemented, yet.") + return nil +} + +func (pcp *PersistentConnectionPool) Renew(token string) (string, error) { + log.Println("Renew: Not implemented, yet.") + return "", nil +} + +func (pcp *PersistentConnectionPool) Do(token string, fn func(*sql.DB) error) error { + log.Println("Do: Not implemented, yet.") + return nil +} + +func (pcp *PersistentConnectionPool) Session(token string) *Session { + log.Println("Session: Not implemented, yet.") + return nil +} + +func (pcp *PersistentConnectionPool) Shutdown() error { + log.Println("Shutdown: Not implemented, yet.") + return nil +} diff -r 96bb671cdd98 -r 3457a60fb12d config/config.go --- a/config/config.go Fri Jul 20 11:09:36 2018 +0200 +++ b/config/config.go Fri Jul 20 17:11:57 2018 +0200 @@ -14,16 +14,17 @@ DBName string DBSSLMode string - JWTSignKey []byte + SessionStore string } func NewConfiguration() *Configuration { // TODO: Load from file. return &Configuration{ - DBHost: envString("GEMMA_DB_HOST", "localhost"), - DBPort: envUint("GEMMA_DB_PORT", 5432), - DBName: envString("GEMMA_DB_NAME", "gemma"), - DBSSLMode: envString("GEMMA_DB_SSL_MODE", "require"), + DBHost: envString("GEMMA_DB_HOST", "localhost"), + DBPort: envUint("GEMMA_DB_PORT", 5432), + DBName: envString("GEMMA_DB_NAME", "gemma"), + DBSSLMode: envString("GEMMA_DB_SSL_MODE", "require"), + SessionStore: envString("GEMMA_SESSION_STORE", ""), } }