fix: refactor code to be testable #181
This commit was merged in pull request #212.
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"me-fit/types"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
@@ -52,44 +50,6 @@ func DoRedirect(w http.ResponseWriter, r *http.Request, url string) {
|
||||
}
|
||||
}
|
||||
|
||||
func GetUser(r *http.Request) *types.User {
|
||||
user := r.Context().Value(ContextKeyUser)
|
||||
if user != nil {
|
||||
return user.(*types.User)
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func GetUserFromSession(db *sql.DB, r *http.Request) *types.User {
|
||||
sessionId := getSessionID(r)
|
||||
if sessionId == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
var user types.User
|
||||
var createdAt time.Time
|
||||
|
||||
user.SessionId = sessionId
|
||||
|
||||
err := db.QueryRow(`
|
||||
SELECT u.user_uuid, u.email, u.email_verified, s.created_at
|
||||
FROM session s
|
||||
INNER JOIN user u ON s.user_uuid = u.user_uuid
|
||||
WHERE session_id = ?`, sessionId).Scan(&user.Id, &user.Email, &user.EmailVerified, &createdAt)
|
||||
if err != nil {
|
||||
slog.Warn("Could not verify session: " + err.Error())
|
||||
return nil
|
||||
}
|
||||
|
||||
if createdAt.Add(time.Duration(8 * time.Hour)).Before(time.Now()) {
|
||||
return nil
|
||||
} else {
|
||||
return &user
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func WaitMinimumTime[T interface{}](waitTime time.Duration, function func() (T, error)) (T, error) {
|
||||
start := time.Now()
|
||||
result, err := function()
|
||||
@@ -97,7 +57,7 @@ func WaitMinimumTime[T interface{}](waitTime time.Duration, function func() (T,
|
||||
return result, err
|
||||
}
|
||||
|
||||
func getSessionID(r *http.Request) string {
|
||||
func GetSessionID(r *http.Request) string {
|
||||
for _, c := range r.Cookies() {
|
||||
if c.Name == "id" {
|
||||
return c.Value
|
||||
|
||||
Reference in New Issue
Block a user