changeset 190:3457a60fb12d

Added stub for a persistent session store.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 20 Jul 2018 17:11:57 +0200
parents 96bb671cdd98
children 77d23b5039bb 1585c334e8a7
files auth/connection.go auth/persistent.go config/config.go
diffstat 3 files changed, 67 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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
--- /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
+}
--- 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", ""),
 	}
 }