acces token table

This commit is contained in:
Simon Martens
2025-05-23 09:32:01 +02:00
parent b81d783e8c
commit 9e922aa49a
9 changed files with 271 additions and 30 deletions

70
dbmodels/access_tokens.go Normal file
View File

@@ -0,0 +1,70 @@
package dbmodels
import (
"github.com/pocketbase/pocketbase/core"
"github.com/pocketbase/pocketbase/tools/types"
)
var _ core.RecordProxy = (*AccessToken)(nil)
type AccessToken struct {
core.BaseRecordProxy
}
func NewAccessToken(record *core.Record) *AccessToken {
i := &AccessToken{}
i.SetProxyRecord(record)
return i
}
func (u *AccessToken) TableName() string {
return ACCESS_TOKENS_TABLE
}
func (u *AccessToken) Token() string {
return u.GetString(ACCESS_TOKENS_TOKEN_FIELD)
}
func (u *AccessToken) SetToken(token string) {
u.Set(ACCESS_TOKENS_TOKEN_FIELD, token)
}
func (u *AccessToken) User() string {
return u.GetString(ACCESS_TOKENS_USER_FIELD)
}
func (u *AccessToken) SetUser(userId string) {
u.Set(ACCESS_TOKENS_USER_FIELD, userId)
}
func (u *AccessToken) Created() string {
return u.GetString(CREATED_FIELD)
}
func (u *AccessToken) Updated() string {
return u.GetString(UPDATED_FIELD)
}
func (u *AccessToken) Expires() types.DateTime {
return u.GetDateTime(ACCESS_TOKENS_EXPIRES_FIELD)
}
func (u *AccessToken) SetExpires(expires types.DateTime) {
u.Set(ACCESS_TOKENS_EXPIRES_FIELD, expires)
}
func (u *AccessToken) URL() string {
return u.GetString(ACCESS_TOKENS_URL_FIELD)
}
func (u *AccessToken) SetURL(url string) {
u.Set(ACCESS_TOKENS_URL_FIELD, url)
}
func (u *AccessToken) Status() string {
return u.GetString(ACCESS_TOKENS_STATUS_FIELD)
}
func (u *AccessToken) SetStatus(status string) {
u.Set(ACCESS_TOKENS_STATUS_FIELD, status)
}

View File

@@ -4,6 +4,13 @@ import "github.com/pocketbase/pocketbase/tools/types"
var EDITORSTATE_VALUES = []string{"Unknown", "ToDo", "Seen", "Partially Edited", "Waiting", "Review", "Edited"}
var TOKEN_STATUS_VALUES = []string{
"active",
"expired",
"invalid",
"revoked",
}
var ITEM_TYPE_VALUES = []string{
"Original",
"Reproduktion",
@@ -425,13 +432,14 @@ var PUBLIC_LIST_RULE = types.Pointer("")
const (
FTS_LIMIT = 100000
PLACES_TABLE = "places"
AGENTS_TABLE = "agents"
SERIES_TABLE = "series"
ENTRIES_TABLE = "entries"
CONTENTS_TABLE = "contents"
ITEMS_TABLE = "items"
SESSIONS_TABLE = "sessions"
PLACES_TABLE = "places"
AGENTS_TABLE = "agents"
SERIES_TABLE = "series"
ENTRIES_TABLE = "entries"
CONTENTS_TABLE = "contents"
ITEMS_TABLE = "items"
SESSIONS_TABLE = "sessions"
ACCESS_TOKENS_TABLE = "access_tokens"
ID_FIELD = "id"
CREATED_FIELD = "created"
@@ -512,12 +520,22 @@ const (
SESSIONS_STATUS_FIELD = "status"
SESSIONS_PERSIST_FIELD = "persist"
USERS_TABLE = "users"
USERS_EMAIL_FIELD = "email"
USERS_SETTINGS_FIELD = "settings"
USERS_NAME_FIELD = "name"
USERS_ROLE_FIELD = "role"
USERS_AVATAR_FIELD = "avatar"
USERS_TABLE = "users"
USERS_EMAIL_FIELD = "email"
USERS_SETTINGS_FIELD = "settings"
USERS_NAME_FIELD = "name"
USERS_ROLE_FIELD = "role"
USERS_AVATAR_FIELD = "avatar"
USERS_VERIFIED_FIELD = "verified"
USERS_DEACTIVATED_FIELD = "deactivated"
ACCESS_TOKENS_TOKEN_FIELD = "token"
ACCESS_TOKENS_CSRF_FIELD = "csrf"
ACCESS_TOKENS_USER_FIELD = "user"
ACCESS_TOKENS_URL_FIELD = "url"
ACCESS_TOKENS_EXPIRES_FIELD = "expires"
ACCESS_TOKENS_LAST_ACCESS_FIELD = "accessed"
ACCESS_TOKENS_STATUS_FIELD = "status"
SESSION_COOKIE_NAME = "sid"
)

View File

@@ -67,6 +67,7 @@ func CreateSessionToken(
session.SetLastAccess(types.NowDateTime())
session.SetUserAgent(userAgent)
session.SetIP(ipAddress)
session.SetStatus(TOKEN_STATUS_VALUES[0]) // Active
if errSave := app.Save(session); errSave != nil {
app.Logger().Error("Failed to save session token record", "error", errSave, "userID", userID)

View File

@@ -115,6 +115,14 @@ func (u *Session) IsExpired() bool {
return u.Expires().IsZero() || u.Expires().Before(types.NowDateTime())
}
func (u *Session) Status() string {
return u.GetString(SESSIONS_STATUS_FIELD)
}
func (u *Session) SetStatus(status string) {
u.Set(SESSIONS_STATUS_FIELD, status)
}
func (u *Session) Fixed() FixedSession {
return FixedSession{
ID: u.Id,

View File

@@ -7,15 +7,16 @@ import (
)
type FixedUser struct {
Id string `json:"id"`
Email string `json:"email"`
Created types.DateTime `json:"created"`
Updated types.DateTime `json:"updated"`
Name string `json:"name"`
Role string `json:"role"`
Avatar string `json:"avatar"`
Verified bool `json:"verified"`
Settings string `json:"settings"`
Id string `json:"id"`
Email string `json:"email"`
Created types.DateTime `json:"created"`
Updated types.DateTime `json:"updated"`
Name string `json:"name"`
Role string `json:"role"`
Avatar string `json:"avatar"`
Verified bool `json:"verified"`
Settings string `json:"settings"`
Deactivated bool `json:"deactivated"`
}
var _ core.RecordProxy = (*Place)(nil)
@@ -72,15 +73,24 @@ func (u *User) SetAvatar(avatar *filesystem.File) {
u.Set(USERS_AVATAR_FIELD, avatar)
}
func (u *User) Deactivated() bool {
return u.GetBool(USERS_DEACTIVATED_FIELD)
}
func (u *User) SetDeactivated(deactivated bool) {
u.Set(USERS_DEACTIVATED_FIELD, deactivated)
}
func (u *User) Fixed() FixedUser {
return FixedUser{
Id: u.Id,
Email: u.Email(),
Created: u.Created(),
Updated: u.Updated(),
Name: u.Name(),
Role: u.Role(),
Avatar: u.Avatar(),
Verified: u.Verified(),
Id: u.Id,
Email: u.Email(),
Created: u.Created(),
Updated: u.Updated(),
Name: u.Name(),
Role: u.Role(),
Avatar: u.Avatar(),
Verified: u.Verified(),
Deactivated: u.Deactivated(),
}
}