fix: refactor random
Some checks failed
Build Docker Image / Explore-Gitea-Actions (push) Failing after 44s

This commit is contained in:
2024-09-13 17:06:29 +02:00
parent 63ddf77d6a
commit 74816b60da
2 changed files with 21 additions and 11 deletions

View File

@@ -547,13 +547,11 @@ func HandleResetPasswordComp(db *sql.DB) http.HandlerFunc {
return
}
var b []byte = make([]byte, 32)
_, err := rand.Reader.Read(b)
token, err := utils.RandomToken()
if err != nil {
utils.LogError("Could not generate token", err)
return
}
token := base64.StdEncoding.EncodeToString(b)
res, err := db.Exec(`
INSERT INTO user_token (user_uuid, type, token, created_at, expires_at)
@@ -598,13 +596,11 @@ func sendVerificationEmail(db *sql.DB, userId string, email string) {
}
if token == "" {
var b []byte = make([]byte, 32)
_, err = rand.Reader.Read(b)
token, err := utils.RandomToken()
if err != nil {
utils.LogError("Could not generate token", err)
return
}
token = base64.StdEncoding.EncodeToString(b)
_, err = db.Exec("INSERT INTO user_token (user_uuid, type, token, created_at) VALUES (?, 'email_verify', ?, datetime())", userId, token)
if err != nil {
@@ -623,14 +619,12 @@ func sendVerificationEmail(db *sql.DB, userId string, email string) {
}
func tryCreateSessionAndSetCookie(r *http.Request, w http.ResponseWriter, db *sql.DB, user_uuid uuid.UUID) bool {
var session_id_bytes []byte = make([]byte, 32)
_, err := rand.Reader.Read(session_id_bytes)
sessionId, err := utils.RandomToken()
if err != nil {
utils.LogError("Could not generate session ID", err)
auth.Error("Internal Server Error").Render(r.Context(), w)
return false
}
session_id := base64.StdEncoding.EncodeToString(session_id_bytes)
// Delete old inactive sessions
_, err = db.Exec("DELETE FROM session WHERE created_at < datetime('now','-8 hours') AND user_uuid = ?", user_uuid)
@@ -638,7 +632,7 @@ func tryCreateSessionAndSetCookie(r *http.Request, w http.ResponseWriter, db *sq
utils.LogError("Could not delete old sessions", err)
}
_, err = db.Exec("INSERT INTO session (session_id, user_uuid, created_at) VALUES (?, ?, datetime())", session_id, user_uuid)
_, err = db.Exec("INSERT INTO session (session_id, user_uuid, created_at) VALUES (?, ?, datetime())", sessionId, user_uuid)
if err != nil {
utils.LogError("Could not insert session", err)
auth.Error("Internal Server Error").Render(r.Context(), w)
@@ -647,7 +641,7 @@ func tryCreateSessionAndSetCookie(r *http.Request, w http.ResponseWriter, db *sq
cookie := http.Cookie{
Name: "id",
Value: session_id,
Value: sessionId,
MaxAge: 60 * 60 * 8, // 8 hours
Secure: true,
HttpOnly: true,

16
utils/ctypto.go Normal file
View File

@@ -0,0 +1,16 @@
package utils
import (
"crypto/rand"
"encoding/base64"
)
func RandomToken() (string, error) {
b := make([]byte, 32)
_, err := rand.Read(b)
if err != nil {
return "", err
}
return base64.StdEncoding.EncodeToString(b), nil
}