Compare commits
6 Commits
5abe9b78cc
...
7d1a04f089
Author | SHA1 | Date | |
---|---|---|---|
7d1a04f089 | |||
53fa6f64ce | |||
7fa38340dd | |||
7aab3cff8c | |||
299534ccf1 | |||
b2655b7f11 |
@ -139,12 +139,6 @@ func main() {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = lhs.AdminStore.Seed()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Fprintf(os.Stderr, err.Error())
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
accountService := server.AccountService{}
|
accountService := server.AccountService{}
|
||||||
hl, err := lhs.GetHandler(&accountService)
|
hl, err := lhs.GetHandler(&accountService)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -107,12 +107,6 @@ func main() {
|
|||||||
lhs, err := handlers.NewLocalHandlerService(ctx, pfp, true, dbResource, cfg, rs)
|
lhs, err := handlers.NewLocalHandlerService(ctx, pfp, true, dbResource, cfg, rs)
|
||||||
lhs.SetDataStore(&userdataStore)
|
lhs.SetDataStore(&userdataStore)
|
||||||
|
|
||||||
err = lhs.AdminStore.Seed()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Fprintf(os.Stderr, err.Error())
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
accountService := server.AccountService{}
|
accountService := server.AccountService{}
|
||||||
|
|
||||||
hl, err := lhs.GetHandler(&accountService)
|
hl, err := lhs.GetHandler(&accountService)
|
||||||
|
@ -100,12 +100,6 @@ func main() {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = lhs.AdminStore.Seed()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Fprintf(os.Stderr, err.Error())
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
accountService := server.AccountService{}
|
accountService := server.AccountService{}
|
||||||
hl, err := lhs.GetHandler(&accountService)
|
hl, err := lhs.GetHandler(&accountService)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -97,12 +97,6 @@ func main() {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = lhs.AdminStore.Seed()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Fprintf(os.Stderr, err.Error())
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
accountService := server.AccountService{}
|
accountService := server.AccountService{}
|
||||||
hl, err := lhs.GetHandler(&accountService)
|
hl, err := lhs.GetHandler(&accountService)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
47
devtools/commands/seed.go
Normal file
47
devtools/commands/seed.go
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
package commands
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"git.defalsify.org/vise.git/logging"
|
||||||
|
"git.grassecon.net/urdt/ussd/internal/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
logg = logging.NewVanilla().WithDomain("adminstore")
|
||||||
|
)
|
||||||
|
|
||||||
|
type Admin struct {
|
||||||
|
PhoneNumber string `json:"phonenumber"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
Admins []Admin `json:"admins"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func Seed(ctx context.Context) error {
|
||||||
|
var config Config
|
||||||
|
adminstore, err := utils.NewAdminStore(ctx, "admin_numbers")
|
||||||
|
store := adminstore.FsStore
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer store.Close()
|
||||||
|
data, err := os.ReadFile("admin_numbers.json")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := json.Unmarshal(data, &config); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, admin := range config.Admins {
|
||||||
|
err := store.Put(ctx, []byte(admin.PhoneNumber), []byte("1"))
|
||||||
|
if err != nil {
|
||||||
|
logg.Printf(logging.LVL_DEBUG, "Failed to insert admin number", admin.PhoneNumber)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
17
devtools/main.go
Normal file
17
devtools/main.go
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"git.grassecon.net/urdt/ussd/devtools/commands"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
err := commands.Seed(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to initialize a list of admins with error %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -2,8 +2,6 @@ package utils
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"git.defalsify.org/vise.git/db"
|
"git.defalsify.org/vise.git/db"
|
||||||
fsdb "git.defalsify.org/vise.git/db/fs"
|
fsdb "git.defalsify.org/vise.git/db/fs"
|
||||||
@ -14,17 +12,9 @@ var (
|
|||||||
logg = logging.NewVanilla().WithDomain("adminstore")
|
logg = logging.NewVanilla().WithDomain("adminstore")
|
||||||
)
|
)
|
||||||
|
|
||||||
type Admin struct {
|
|
||||||
PhoneNumber string `json:"phonenumber"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type Config struct {
|
|
||||||
Admins []Admin `json:"admins"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type AdminStore struct {
|
type AdminStore struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
fsStore db.Db
|
FsStore db.Db
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewAdminStore(ctx context.Context, fileName string) (*AdminStore, error) {
|
func NewAdminStore(ctx context.Context, fileName string) (*AdminStore, error) {
|
||||||
@ -32,7 +22,7 @@ func NewAdminStore(ctx context.Context, fileName string) (*AdminStore, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &AdminStore{ctx: ctx, fsStore: fsStore}, nil
|
return &AdminStore{ctx: ctx, FsStore: fsStore}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getFsStore(ctx context.Context, connectStr string) (db.Db, error) {
|
func getFsStore(ctx context.Context, connectStr string) (db.Db, error) {
|
||||||
@ -45,33 +35,9 @@ func getFsStore(ctx context.Context, connectStr string) (db.Db, error) {
|
|||||||
return fsStore, nil
|
return fsStore, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Seed initializes a list of phonenumbers with admin privileges
|
|
||||||
func (as *AdminStore) Seed() error {
|
|
||||||
var config Config
|
|
||||||
|
|
||||||
store := as.fsStore
|
|
||||||
defer store.Close()
|
|
||||||
|
|
||||||
data, err := os.ReadFile("admin_numbers.json")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := json.Unmarshal(data, &config); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
for _, admin := range config.Admins {
|
|
||||||
err := store.Put(as.ctx, []byte(admin.PhoneNumber), []byte("1"))
|
|
||||||
if err != nil {
|
|
||||||
logg.Printf(logging.LVL_DEBUG, "Failed to insert admin number", admin.PhoneNumber)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Checks if the given sessionId is listed as an admin.
|
// Checks if the given sessionId is listed as an admin.
|
||||||
func (as *AdminStore) IsAdmin(sessionId string) (bool, error) {
|
func (as *AdminStore) IsAdmin(sessionId string) (bool, error) {
|
||||||
_, err := as.fsStore.Get(as.ctx, []byte(sessionId))
|
_, err := as.FsStore.Get(as.ctx, []byte(sessionId))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if db.IsNotFound(err) {
|
if db.IsNotFound(err) {
|
||||||
logg.Printf(logging.LVL_INFO, "Returning false because session id was not found")
|
logg.Printf(logging.LVL_INFO, "Returning false because session id was not found")
|
||||||
|
Loading…
Reference in New Issue
Block a user