mirror of
https://github.com/sigmasternchen/threadule
synced 2025-03-15 08:09:01 +00:00
added logic function to check sessions
This commit is contained in:
parent
798db0e0f2
commit
59f5b51a9d
7 changed files with 58 additions and 4 deletions
|
@ -3,6 +3,8 @@ package app
|
|||
import "threadule/backend/internal/data/models"
|
||||
|
||||
type Data interface {
|
||||
GetSession(id string) (*models.Session, error)
|
||||
UpdateSession(session *models.Session) error
|
||||
CleanupSessions() error
|
||||
|
||||
UpdateTweet(tweet *models.Tweet) error
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
package app
|
||||
|
||||
import "threadule/backend/internal/data/models"
|
||||
|
||||
type Logic interface {
|
||||
AuthenticateSession(token string) (*models.User, error)
|
||||
}
|
||||
|
|
|
@ -11,3 +11,22 @@ func (d *Data) CleanupSessions() error {
|
|||
Delete(&models.Session{}).
|
||||
Error
|
||||
}
|
||||
|
||||
func (d *Data) GetSession(id string) (*models.Session, error) {
|
||||
var session models.Session
|
||||
err := d.db.
|
||||
Where("valid_until > ?", time.Now()).
|
||||
Where("id = ?", id).
|
||||
First(&session).
|
||||
Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &session, nil
|
||||
}
|
||||
|
||||
func (d *Data) UpdateSession(session *models.Session) error {
|
||||
return d.db.
|
||||
Save(session).
|
||||
Error
|
||||
}
|
||||
|
|
|
@ -6,7 +6,9 @@ import (
|
|||
)
|
||||
|
||||
func (d *Data) UpdateThread(thread *models.Thread) error {
|
||||
return d.db.Save(thread).Error
|
||||
return d.db.
|
||||
Save(thread).
|
||||
Error
|
||||
}
|
||||
|
||||
func (d *Data) GetTweetsForThread(thread *models.Thread) ([]models.Tweet, error) {
|
||||
|
@ -14,7 +16,8 @@ func (d *Data) GetTweetsForThread(thread *models.Thread) ([]models.Tweet, error)
|
|||
err := d.db.
|
||||
Where("thread_id = ?", thread.ID).
|
||||
Order("ordinal ASC").
|
||||
Find(&tweets).Error
|
||||
Find(&tweets).
|
||||
Error
|
||||
return tweets, err
|
||||
}
|
||||
|
||||
|
|
|
@ -3,5 +3,7 @@ package data
|
|||
import "threadule/backend/internal/data/models"
|
||||
|
||||
func (d *Data) UpdateTweet(tweet *models.Tweet) error {
|
||||
return d.db.Save(tweet).Error
|
||||
return d.db.
|
||||
Save(tweet).
|
||||
Error
|
||||
}
|
||||
|
|
|
@ -1,8 +1,31 @@
|
|||
package logic
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"threadule/backend/internal/data/models"
|
||||
"time"
|
||||
)
|
||||
|
||||
const sessionDuration = 7 * 24 * time.Hour
|
||||
|
||||
func (l *Logic) scheduleTriggerAuth() {
|
||||
err := l.ctx.Data.CleanupSessions()
|
||||
if err != nil {
|
||||
l.ctx.Log.Errorf("couldn't clean up sessions: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Logic) AuthenticateSession(token string) (*models.User, error) {
|
||||
session, err := l.ctx.Data.GetSession(token)
|
||||
if err != nil {
|
||||
return nil, errors.New("invalid session")
|
||||
}
|
||||
|
||||
session.ValidUntil = time.Now().Add(sessionDuration)
|
||||
err = l.ctx.Data.UpdateSession(session)
|
||||
if err != nil {
|
||||
l.ctx.Log.Errorf("couldn't extend session: %v", err)
|
||||
}
|
||||
|
||||
return session.User, nil
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package logic
|
||||
|
||||
import "threadule/backend/internal/app"
|
||||
import (
|
||||
"threadule/backend/internal/app"
|
||||
)
|
||||
|
||||
type Logic struct {
|
||||
ctx *app.Context
|
||||
|
|
Loading…
Reference in a new issue