read users from filesystem
This commit is contained in:
parent
07deb59b5c
commit
2d2a9456c6
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
id: "764353",
|
"id": "764353",
|
||||||
name: "Settel",
|
"name": "Settel",
|
||||||
role: "admin",
|
"role": "admin"
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
id: "837293",
|
"id": "837293",
|
||||||
name: "Player #1",
|
"name": "Player #1",
|
||||||
role: "player",
|
"role": "player"
|
||||||
}
|
}
|
||||||
|
@ -10,13 +10,17 @@ type Application struct {
|
|||||||
users users.Users
|
users users.Users
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewApplication(config applicationConfig.ApplicationConfig) *Application {
|
func NewApplication(config applicationConfig.ApplicationConfig) (*Application, error) {
|
||||||
app := Application{
|
app := Application{
|
||||||
config: config,
|
config: config,
|
||||||
users: users.NewUsers(config),
|
users: users.NewUsers(config),
|
||||||
}
|
}
|
||||||
|
err := app.users.LoadUsers()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
return &app
|
return &app, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (app *Application) GetConfig() applicationConfig.ApplicationConfig {
|
func (app *Application) GetConfig() applicationConfig.ApplicationConfig {
|
||||||
|
@ -6,6 +6,6 @@ type ApplicationConfig struct {
|
|||||||
|
|
||||||
func NewApplicationConfig() ApplicationConfig {
|
func NewApplicationConfig() ApplicationConfig {
|
||||||
return ApplicationConfig{
|
return ApplicationConfig{
|
||||||
DataDir: "data/",
|
DataDir: "../data/",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,6 @@ func (authMux *AuthMux) isAuthenticated(r *http.Request) bool {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
fmt.Printf("authCookie: %s\n", authCookie.Value)
|
|
||||||
|
|
||||||
usr, usrErr := authMux.app.GetUsers().GetUserById(authCookie.Value)
|
usr, usrErr := authMux.app.GetUsers().GetUserById(authCookie.Value)
|
||||||
if usrErr != nil {
|
if usrErr != nil {
|
||||||
|
@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"os"
|
||||||
"sirlab.de/go/knyt/application"
|
"sirlab.de/go/knyt/application"
|
||||||
"sirlab.de/go/knyt/applicationConfig"
|
"sirlab.de/go/knyt/applicationConfig"
|
||||||
"sirlab.de/go/knyt/handler"
|
"sirlab.de/go/knyt/handler"
|
||||||
@ -10,7 +11,11 @@ import (
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
appConfig := applicationConfig.NewApplicationConfig()
|
appConfig := applicationConfig.NewApplicationConfig()
|
||||||
app := application.NewApplication(appConfig)
|
app, err := application.NewApplication(appConfig)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("%v\n", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
mux := handler.NewAuthMux(app)
|
mux := handler.NewAuthMux(app)
|
||||||
|
|
||||||
mux.PublicHandleFunc("/__intern__/exit", handler.Exit)
|
mux.PublicHandleFunc("/__intern__/exit", handler.Exit)
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
package user
|
package user
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
func NewUser(id, name, role string) *User {
|
func NewUser(id, name, role string) *User {
|
||||||
return &User{
|
return &User{
|
||||||
Id: id,
|
Id: id,
|
||||||
@ -8,6 +14,20 @@ func NewUser(id, name, role string) *User {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewUserFromFile(fileName string) (*User, error) {
|
||||||
|
jsonBytes, err := os.ReadFile(fileName)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var usr User
|
||||||
|
if err := json.Unmarshal(jsonBytes, &usr); err != nil {
|
||||||
|
return nil, fmt.Errorf("%s: %v\n", fileName, err)
|
||||||
|
} else {
|
||||||
|
return &usr, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (user *User) IsPlayer() bool {
|
func (user *User) IsPlayer() bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,8 @@ package users
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
"sirlab.de/go/knyt/applicationConfig"
|
"sirlab.de/go/knyt/applicationConfig"
|
||||||
"sirlab.de/go/knyt/user"
|
"sirlab.de/go/knyt/user"
|
||||||
)
|
)
|
||||||
@ -18,6 +20,25 @@ func NewUsers(appConfig applicationConfig.ApplicationConfig) Users {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (users Users) LoadUsers() error {
|
||||||
|
dirName := path.Join(users.appConfig.DataDir, "users")
|
||||||
|
files, err := os.ReadDir(dirName)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, file := range files {
|
||||||
|
fileName := path.Join(dirName, file.Name())
|
||||||
|
|
||||||
|
if usr, err := user.NewUserFromFile(fileName); err != nil {
|
||||||
|
return err
|
||||||
|
} else {
|
||||||
|
users.AddUser(usr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (users Users) AddUser(usr *user.User) {
|
func (users Users) AddUser(usr *user.User) {
|
||||||
users.users[usr.Id] = usr
|
users.users[usr.Id] = usr
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user