Small refactor for user preferences
This commit is contained in:
parent
1a712fb7a9
commit
81d02b82dc
13 changed files with 202 additions and 112 deletions
57
user/pkg.go
Normal file
57
user/pkg.go
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
package user
|
||||
|
||||
import (
|
||||
// External
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
"github.com/jmoiron/sqlx"
|
||||
|
||||
// Standard
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
ID int
|
||||
Username string
|
||||
Name string
|
||||
Preferences map[string]UserPreferences
|
||||
}
|
||||
|
||||
type UserSession struct {
|
||||
UserID int
|
||||
Username string
|
||||
Password string
|
||||
Name string
|
||||
ClientUUID string
|
||||
Db *sqlx.DB
|
||||
}
|
||||
|
||||
type UserPreferences struct {
|
||||
DownloadImages bool
|
||||
DownloadFiles bool
|
||||
}
|
||||
|
||||
func NewUser(claims jwt.MapClaims) (u UserSession) {
|
||||
uid, _ := claims["uid"].(float64)
|
||||
name, _ := claims["name"].(string)
|
||||
username, _ := claims["login"].(string)
|
||||
clientUUID, _ := claims["cid"].(string)
|
||||
|
||||
u.UserID = int(uid)
|
||||
u.Username = username
|
||||
u.Name = name
|
||||
u.ClientUUID = clientUUID
|
||||
return
|
||||
}
|
||||
|
||||
func (u UserSession) Preferences() (prefs map[string]UserPreferences, err error) {
|
||||
row := u.Db.QueryRow(`SELECT preferences FROM public.user WHERE id=$1`, u.UserID)
|
||||
|
||||
var data []byte
|
||||
err = row.Scan(&data)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = json.Unmarshal(data, &prefs)
|
||||
return
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue