diff options
Diffstat (limited to 'auth/token')
-rw-r--r-- | auth/token/add.go | 58 | ||||
-rw-r--r-- | auth/token/generate.go | 14 | ||||
-rw-r--r-- | auth/token/validate.go | 51 |
3 files changed, 0 insertions, 123 deletions
diff --git a/auth/token/add.go b/auth/token/add.go deleted file mode 100644 index eadc6dc..0000000 --- a/auth/token/add.go +++ /dev/null @@ -1,58 +0,0 @@ -package token - -import ( - "log" - "time" - - "tildegit.org/andinus/perseus/storage/sqlite3" - "tildegit.org/andinus/perseus/user" -) - -// AddToken will generate a random token, add it to database and -// return the token. -func AddToken(db *sqlite3.DB, uInfo map[string]string) (token string, err error) { - // Acquire write lock on the database. - db.Mu.Lock() - defer db.Mu.Unlock() - - token = genToken(64) - - u := user.User{} - u.SetUsername(uInfo["username"]) - - // Set user id from username. - err = u.GetID(db) - if err != nil { - log.Printf("auth/token.go: %s\n", - "failed to get id from username") - return - } - - // Start the transaction - tx, err := db.Conn.Begin() - if err != nil { - log.Printf("auth/token.go: %s\n", - "failed to begin transaction") - return - } - - stmt, err := db.Conn.Prepare(` -INSERT INTO access(id, token, genTime) values(?, ?, ?)`) - if err != nil { - log.Printf("auth/token.go: %s\n", - "failed to prepare statement") - return - } - defer stmt.Close() - - _, err = stmt.Exec(u.ID(), u.Username(), time.Now().UTC()) - if err != nil { - log.Printf("auth/token.go: %s\n", - "failed to execute statement") - return - } - - tx.Commit() - return - -} diff --git a/auth/token/generate.go b/auth/token/generate.go deleted file mode 100644 index 0c717d9..0000000 --- a/auth/token/generate.go +++ /dev/null @@ -1,14 +0,0 @@ -package token - -import ( - "crypto/rand" - "encoding/base64" -) - -// genToken generates a random token string of length n. Don't forget to -// seed the random number generator otherwise it won't be random. -func genToken(n int) string { - b := make([]byte, n/2) - rand.Read(b) - return base64.StdEncoding.EncodeToString(b) -} diff --git a/auth/token/validate.go b/auth/token/validate.go deleted file mode 100644 index f1ee149..0000000 --- a/auth/token/validate.go +++ /dev/null @@ -1,51 +0,0 @@ -package token - -import ( - "errors" - "log" - - "tildegit.org/andinus/perseus/storage/sqlite3" - "tildegit.org/andinus/perseus/user" -) - -// ValToken will validate the token and returns an error. If error -// doesn't equal nil then consider token invalid. -func ValToken(db *sqlite3.DB, uInfo map[string]string) error { - // Acquire read lock on the database. - db.Mu.RLock() - defer db.Mu.RUnlock() - - u := user.User{} - u.SetUsername(uInfo["username"]) - - // Set user id from username. - err := u.GetID(db) - if err != nil { - log.Printf("auth/token.go: %s\n", - "failed to get id from username") - return err - } - - // Check if user's token is valid. - stmt, err := db.Conn.Prepare("SELECT token FROM access WHERE id = ?") - if err != nil { - log.Printf("auth/token.go: %s\n", - "failed to prepare statement") - return err - } - defer stmt.Close() - - var token string - err = stmt.QueryRow(u.ID()).Scan(&token) - if err != nil { - log.Printf("auth/token.go: %s\n", - "query failed") - return err - } - - if token != uInfo["token"] { - err = errors.New("token mismatch") - } - - return err -} |