Feat(ktm-booking): Initial commit
Some checks failed
ktm-booking-bot/ktm-booking-bot/pipeline/head Something is wrong with the build of this commit
Some checks failed
ktm-booking-bot/ktm-booking-bot/pipeline/head Something is wrong with the build of this commit
This commit is contained in:
56
backend/internal/user/sessioncontroller.go
Normal file
56
backend/internal/user/sessioncontroller.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"log"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func (env *Env) createSession(user *User) (string, error) {
|
||||
var newSession Session
|
||||
newSession.UserID = user.ID
|
||||
newSession.SessionToken = uuid.New().String()
|
||||
|
||||
err := env.DB.Create(&newSession).Error
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return "", errors.New("failed write to database")
|
||||
}
|
||||
|
||||
return newSession.SessionToken, nil
|
||||
}
|
||||
|
||||
func (env *Env) getUserFromSessionToken(sessionToken string) (*User, error) {
|
||||
var currUser User
|
||||
err := env.DB.Table("sessions").Select("users.*").Joins("left join users on users.id = sessions.user_id").Where("sessions.session_token = ?", sessionToken).First(&currUser).Error
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, errors.New("failed get user")
|
||||
}
|
||||
|
||||
err = env.DB.Preload("Profile").Where(&currUser).First(&currUser).Error
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, errors.New("failed get user")
|
||||
}
|
||||
|
||||
return &currUser, nil
|
||||
}
|
||||
|
||||
func (env *Env) logout(sessionToken string) error {
|
||||
var currSession Session
|
||||
err := env.DB.Where(&Session{SessionToken: sessionToken}).First(&currSession).Error
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return errors.New("failed get session")
|
||||
}
|
||||
|
||||
err = env.DB.Delete(&currSession).Error
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return errors.New("failed to logout")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user