Personal Git forge.

Code git clone ssh://git.poy.ooo:6969/~poyo/farga ZIP
db/sessions.go / 1KiB #0ed2a65e
Raw
package dbimport (	"crypto/rand"	"farga/db/types"	"farga/lib"	"time"	"github.com/google/uuid")// retrieves a session from the hash.func (db *DB) Session(sessionString string) (types.Session, error) {	var session types.Session	hash := lib.HashSHA256([]byte(sessionString))	err := db.First(&session, &types.Session{Hash: hash}).Error	return session, err}// generates a new session + token, saving a SHA256 hash of the token into the database.func (db *DB) NewSession(user_id *uuid.UUID) (session types.Session, token string, err error) {	token = rand.Text()	session = types.Session{		UserID: user_id,		Hash:   lib.HashSHA256([]byte(token)),	}	err = db.Create(&session).Error	return session, token, err}// deletes all expired sessions in the database.func (db *DB) DeleteExpiredSessions() {	db.Where("created_at < ?", time.Now().AddDate(0, 0, -lib.SessionDurationDays)).Delete(&types.Session{})}// deletes a session given its token.func (db *DB) DeleteSession(sessionString string) error {	hash := lib.HashSHA256([]byte(sessionString))	return db.Where("hash = ?", hash).Delete(&types.Session{}).Error}