diff options
| -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 } |
