diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2018-12-27 07:57:48 -0500 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2018-12-27 07:57:48 -0500 |
| commit | b953a2c81fa8a66a58a9c0ec185da48ce853e8d9 (patch) | |
| tree | 86fd378f3b38a3ea9343160d61472115ec50a179 | |
| parent | ed4f6fa1a785e14f39bda9715e3d081fb426ff36 (diff) | |
| download | id-b953a2c81fa8a66a58a9c0ec185da48ce853e8d9.tar.gz | |
WIP: not working
| -rw-r--r-- | main.go | 18 | ||||
| -rw-r--r-- | store.go | 19 |
2 files changed, 32 insertions, 5 deletions
@@ -7,7 +7,7 @@ import ( ) type App struct { - SessionStore + Store } func logMux(handler http.Handler) http.Handler { @@ -35,6 +35,22 @@ func (app *App) rootHandler(w http.ResponseWriter, r *http.Request) { } } +func (app *App) loginHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == http.MethodPost { + if err := r.ParseForm(); err != nil { + panic(err) + } else { + username := r.Form.Get("username") + password := r.Form.Get("password") + row := app.Query("SELECT id FROM users WHERE user_name = ?", username) + var id int64 + if err := row.rowScan(&id); err != nil { + panic(err) + } + } + } +} + func main() { //log.SetFlags(log.LstdFlags) store := NewPgStore() @@ -9,14 +9,20 @@ import ( type Session struct { Id string - UserId string + UserId int64 } -type SessionStore interface { - Get(id string) (*Session, bool) +type User struct { + Id int64 + UserName string } -type PgSessionStore struct { +type Store interface { + GetSession(id string) (*Session, bool) + GetUser(id int64) (*User, bool) +} + +type PgStore struct { *sql.DB cache map[string]*Session } @@ -31,5 +37,10 @@ func NewPgStore() *PgSessionStore { func (store *PgSessionStore) Get(id string) (*Session, bool) { s, ok := store.cache[id] + if !ok { + row := store.QueryRow("SELECT id, user_id FROM session WHERE id = ?", id) + var s Session + row.Scan(&s. + } return s, ok } |
