feat: add admin/auth api (#22)

* feat: add admin/auth api

- jwt cookie based auth
- /auth
- admin/*

* add: meta proxy

* fix: remove ussd account status from syncer

* add: cookie defaults and nuxt init check route

* add: pin and address handlers
This commit is contained in:
2022-06-02 11:24:58 +03:00
committed by GitHub
parent 861af1761d
commit 77f127e14a
14 changed files with 369 additions and 5 deletions

View File

@@ -6,6 +6,7 @@ import (
"strings"
batch_balance "github.com/grassrootseconomics/cic-go/batch_balance"
"github.com/grassrootseconomics/cic-go/meta"
cic_net "github.com/grassrootseconomics/cic-go/net"
"github.com/ethereum/go-ethereum/common"
@@ -40,12 +41,19 @@ type config struct {
Enabled bool `koan:"enabled"`
}
Syncers map[string]string `koanf:"syncers"`
Meta struct {
Endpoint string `koanf:"meta"`
}
Jwt struct {
Secret string `koanf:"secret"`
}
}
type queries struct {
core goyesql.Queries
dashboard goyesql.Queries
public goyesql.Queries
admin goyesql.Queries
}
func loadConfig(configFilePath string, k *koanf.Koanf) error {
@@ -110,6 +118,10 @@ func loadCicNet(tokenIndex common.Address) error {
return nil
}
func loadCicMeta(metaEndpoint string) {
metaClient = meta.NewCicMeta(metaEndpoint)
}
func loadBatchBalance(balanceResolver common.Address) error {
var err error
@@ -137,10 +149,16 @@ func loadQueries(sqlFilesPath string) error {
return err
}
adminQueries, err := goyesql.ParseFile(fmt.Sprintf("%s/admin.sql", sqlFilesPath))
if err != nil {
return err
}
preparedQueries = &queries{
core: coreQueries,
dashboard: dashboardQueries,
public: publicQueries,
admin: adminQueries,
}
return nil

View File

@@ -8,6 +8,7 @@ import (
"time"
batch_balance "github.com/grassrootseconomics/cic-go/batch_balance"
"github.com/grassrootseconomics/cic-go/meta"
cic_net "github.com/grassrootseconomics/cic-go/net"
"github.com/grassrootseconomics/cic-go/provider"
"github.com/hibiken/asynq"
@@ -28,6 +29,7 @@ var (
rpcProvider *provider.Provider
cicnetClient *cic_net.CicNet
batchBalance *batch_balance.BatchBalance
metaClient *meta.CicMeta
rClient asynq.RedisConnOpt
)
@@ -59,9 +61,10 @@ func init() {
}
if err := parseRedis(conf.Db.Redis); err != nil {
log.Fatal().Err(err).Msg("could not parse redis connection string")
}
loadCicMeta(conf.Meta.Endpoint)
}
func main() {

View File

@@ -1,6 +1,7 @@
package main
import (
"cic-dw/internal/admin"
"cic-dw/internal/dashboard"
"cic-dw/internal/public"
@@ -21,6 +22,7 @@ func initHTTPServer() *echo.Echo {
dashboard.InitDashboardApi(server, db, preparedQueries.dashboard)
public.InitPublicApi(server, db, batchBalance, cicnetClient, preparedQueries.public)
admin.InitAdminApi(server, db, preparedQueries.admin, metaClient, conf.Jwt.Secret)
return server
}