ussd/internal/utils/adminstore.go

52 lines
1.1 KiB
Go
Raw Normal View History

package utils
import (
2024-10-30 12:30:38 +01:00
"context"
2024-10-29 12:26:24 +01:00
2024-10-30 12:30:38 +01:00
"git.defalsify.org/vise.git/db"
fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/logging"
)
2024-10-30 12:30:38 +01:00
var (
logg = logging.NewVanilla().WithDomain("adminstore")
)
type AdminStore struct {
ctx context.Context
2024-10-31 19:00:16 +01:00
FsStore db.Db
2024-10-30 12:30:38 +01:00
}
2024-10-29 12:26:24 +01:00
2024-10-30 12:30:38 +01:00
func NewAdminStore(ctx context.Context, fileName string) (*AdminStore, error) {
fsStore, err := getFsStore(ctx, fileName)
if err != nil {
2024-10-30 12:30:38 +01:00
return nil, err
}
2024-10-31 19:00:16 +01:00
return &AdminStore{ctx: ctx, FsStore: fsStore}, nil
}
2024-10-30 12:30:38 +01:00
func getFsStore(ctx context.Context, connectStr string) (db.Db, error) {
fsStore := fsdb.NewFsDb()
err := fsStore.Connect(ctx, connectStr)
fsStore.SetPrefix(db.DATATYPE_USERDATA)
if err != nil {
return nil, err
}
2024-10-30 12:30:38 +01:00
return fsStore, nil
}
// Checks if the given sessionId is listed as an admin.
func (as *AdminStore) IsAdmin(sessionId string) (bool, error) {
2024-10-31 19:00:16 +01:00
_, err := as.FsStore.Get(as.ctx, []byte(sessionId))
if err != nil {
2024-10-30 12:30:38 +01:00
if db.IsNotFound(err) {
logg.Printf(logging.LVL_INFO, "Returning false because session id was not found")
return false, nil
} else {
return false, err
}
}
2024-10-30 12:30:38 +01:00
return true, nil
}