feature/1109 grpc session model (#1141)

- **feat: remove Hway deployment**
- **feat: introduce session middleware for requests**
- **refactor: update path imports to use new pkg folder**
- **feat: add gRPC client for interacting with services**
- **feat: remove grpc client and use REST api**
- **refactor: move  from  to**
- **feat: add client views endpoint**
- **feat: add webauthn support**
- **closes: #1124**
- **refactor: Improve PR labeler configuration**
- **feat: add milestone discussion template**
- **feat: remove OKR tracking issue template**
- **feat: use gorilla sessions for session management**
- **refactor: move pubkey related code to**
- **<no value>**
- **refactor: remove unused identifier type**
- **feat: integrate Macaroon Keeper with Service Module**
- **refactor: rename worker routes for clarity**
This commit is contained in:
Prad Nukala
2024-10-11 16:47:52 -04:00
committed by GitHub
parent 1d569d35b4
commit 3790e926de
121 changed files with 869 additions and 589 deletions
-1
View File
@@ -1 +0,0 @@
package types
+64
View File
@@ -1,6 +1,8 @@
package types
import (
"strings"
didv1 "github.com/onsonr/sonr/api/did/v1"
)
@@ -10,3 +12,65 @@ type PubKeyI interface {
GetRawKey() *didv1.RawKey
GetJwk() *didv1.JSONWebKey
}
// PubKey defines a generic pubkey.
type PublicKey interface {
VerifySignature(msg, sig []byte) bool
}
type PubKeyG[T any] interface {
*T
PublicKey
}
type pubKeyImpl struct {
decode func(b []byte) (PublicKey, error)
validate func(key PublicKey) error
}
// func WithSecp256K1PubKey() Option {
// return WithPubKeyWithValidationFunc(func(pt *secp256k1.PubKey) error {
// _, err := dcrd_secp256k1.ParsePubKey(pt.Key)
// return err
// })
// }
//
// func WithPubKey[T any, PT PubKeyG[T]]() Option {
// return WithPubKeyWithValidationFunc[T, PT](func(_ PT) error {
// return nil
// })
// }
//
// func WithPubKeyWithValidationFunc[T any, PT PubKeyG[T]](validateFn func(PT) error) Option {
// pkImpl := pubKeyImpl{
// decode: func(b []byte) (PublicKey, error) {
// key := PT(new(T))
// err := gogoproto.Unmarshal(b, key)
// if err != nil {
// return nil, err
// }
// return key, nil
// },
// validate: func(k PublicKey) error {
// concrete, ok := k.(PT)
// if !ok {
// return fmt.Errorf(
// "invalid pubkey type passed for validation, wanted: %T, got: %T",
// concrete,
// k,
// )
// }
// return validateFn(concrete)
// },
// }
// return func(a *Account) {
// a.supportedPubKeys[gogoproto.MessageName(PT(new(T)))] = pkImpl
// }
// }
func nameFromTypeURL(url string) string {
name := url
if i := strings.LastIndexByte(url, '/'); i >= 0 {
name = name[i+len("/"):]
}
return name
}
+30
View File
@@ -0,0 +1,30 @@
package types
import (
"context"
signingv1beta1 "cosmossdk.io/api/cosmos/tx/signing/v1beta1"
"cosmossdk.io/x/tx/signing"
"github.com/cosmos/cosmos-sdk/types/tx"
)
type directHandler struct{}
func (s directHandler) Mode() signingv1beta1.SignMode {
return signingv1beta1.SignMode_SIGN_MODE_DIRECT_AUX
}
func (s directHandler) GetSignBytes(
_ context.Context,
signerData signing.SignerData,
txData signing.TxData,
) ([]byte, error) {
txDoc := tx.SignDoc{
BodyBytes: txData.BodyBytes,
AuthInfoBytes: txData.AuthInfoBytes,
ChainId: signerData.ChainID,
AccountNumber: signerData.AccountNumber,
}
return txDoc.Marshal()
}
+3 -1
View File
@@ -20,6 +20,7 @@ import (
didkeeper "github.com/onsonr/sonr/x/did/keeper"
macaroonkeeper "github.com/onsonr/sonr/x/macaroon/keeper"
"github.com/onsonr/sonr/x/service/keeper"
vaultkeeper "github.com/onsonr/sonr/x/vault/keeper"
)
var _ appmodule.AppModule = AppModule{}
@@ -50,6 +51,7 @@ type ModuleInputs struct {
NFTKeeper nftkeeper.Keeper
StakingKeeper stakingkeeper.Keeper
SlashingKeeper slashingkeeper.Keeper
VaultKeeper vaultkeeper.Keeper
}
type ModuleOutputs struct {
@@ -62,7 +64,7 @@ type ModuleOutputs struct {
func ProvideModule(in ModuleInputs) ModuleOutputs {
govAddr := authtypes.NewModuleAddress(govtypes.ModuleName).String()
k := keeper.NewKeeper(in.Cdc, in.StoreService, log.NewLogger(os.Stderr), govAddr, in.DidKeeper, in.GroupKeeper, in.MacaroonKeeper, in.NFTKeeper)
k := keeper.NewKeeper(in.Cdc, in.StoreService, log.NewLogger(os.Stderr), govAddr, in.DidKeeper, in.GroupKeeper, in.MacaroonKeeper, in.NFTKeeper, in.VaultKeeper)
m := NewAppModule(in.Cdc, k, in.DidKeeper, in.MacaroonKeeper)
return ModuleOutputs{Module: m, Keeper: k, Out: depinject.Out{}}
+3
View File
@@ -15,6 +15,7 @@ import (
didkeeper "github.com/onsonr/sonr/x/did/keeper"
macaroonkeeper "github.com/onsonr/sonr/x/macaroon/keeper"
"github.com/onsonr/sonr/x/service/types"
vaultkeeper "github.com/onsonr/sonr/x/vault/keeper"
)
type Keeper struct {
@@ -33,6 +34,7 @@ type Keeper struct {
GroupKeeper groupkeeper.Keeper
MacaroonKeeper macaroonkeeper.Keeper
NFTKeeper nftkeeper.Keeper
VaultKeeper vaultkeeper.Keeper
}
// NewKeeper creates a new Keeper instance
@@ -45,6 +47,7 @@ func NewKeeper(
groupKeeper groupkeeper.Keeper,
macaroonKeeper macaroonkeeper.Keeper,
nftKeeper nftkeeper.Keeper,
vaultKeeper vaultkeeper.Keeper,
) Keeper {
logger = logger.With(log.ModuleKey, "x/"+types.ModuleName)
+3 -1
View File
@@ -30,6 +30,7 @@ import (
module "github.com/onsonr/sonr/x/service"
"github.com/onsonr/sonr/x/service/keeper"
"github.com/onsonr/sonr/x/service/types"
vaultkeeper "github.com/onsonr/sonr/x/vault/keeper"
)
var maccPerms = map[string][]string{
@@ -57,6 +58,7 @@ type testFixture struct {
stakingKeeper *stakingkeeper.Keeper
mintkeeper mintkeeper.Keeper
nftkeeper nftkeeper.Keeper
vaultkeeper vaultkeeper.Keeper
addrs []sdk.AccAddress
govModAddr string
@@ -84,7 +86,7 @@ func SetupTest(t *testing.T) *testFixture {
registerBaseSDKModules(f, encCfg, storeService, logger, require)
// Setup Keeper.
f.k = keeper.NewKeeper(encCfg.Codec, storeService, logger, f.govModAddr, f.didkeeper, f.groupkeeper, f.mack, f.nftkeeper)
f.k = keeper.NewKeeper(encCfg.Codec, storeService, logger, f.govModAddr, f.didkeeper, f.groupkeeper, f.mack, f.nftkeeper, f.vaultkeeper)
f.msgServer = keeper.NewMsgServerImpl(f.k)
f.queryServer = keeper.NewQuerier(f.k)
f.appModule = module.NewAppModule(encCfg.Codec, f.k, f.didkeeper, f.mack)
+3 -1
View File
@@ -14,6 +14,7 @@ import (
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
macaroonkeeper "github.com/onsonr/sonr/x/macaroon/keeper"
modulev1 "github.com/onsonr/sonr/api/vault/module/v1"
didkeeper "github.com/onsonr/sonr/x/did/keeper"
@@ -44,6 +45,7 @@ type ModuleInputs struct {
AccountKeeper authkeeper.AccountKeeper
DidKeeper didkeeper.Keeper
MacaroonKeeper macaroonkeeper.Keeper
StakingKeeper stakingkeeper.Keeper
SlashingKeeper slashingkeeper.Keeper
}
@@ -58,7 +60,7 @@ type ModuleOutputs struct {
func ProvideModule(in ModuleInputs) ModuleOutputs {
govAddr := authtypes.NewModuleAddress(govtypes.ModuleName).String()
k := keeper.NewKeeper(in.Cdc, in.StoreService, log.NewLogger(os.Stderr), govAddr, in.AccountKeeper, in.DidKeeper)
k := keeper.NewKeeper(in.Cdc, in.StoreService, log.NewLogger(os.Stderr), govAddr, in.AccountKeeper, in.DidKeeper, in.MacaroonKeeper)
m := NewAppModule(in.Cdc, k, in.DidKeeper)
return ModuleOutputs{Module: m, Keeper: k, Out: depinject.Out{}}
+12 -8
View File
@@ -13,6 +13,7 @@ import (
apiv1 "github.com/onsonr/sonr/api/vault/v1"
didkeeper "github.com/onsonr/sonr/x/did/keeper"
macaroonkeeper "github.com/onsonr/sonr/x/macaroon/keeper"
"github.com/onsonr/sonr/x/vault/types"
)
@@ -30,8 +31,9 @@ type Keeper struct {
ipfsClient *rpc.HttpApi
AccountKeeper authkeeper.AccountKeeper
DIDKeeper didkeeper.Keeper
AccountKeeper authkeeper.AccountKeeper
DIDKeeper didkeeper.Keeper
MacaroonKeeper macaroonkeeper.Keeper
}
// NewKeeper creates a new Keeper instance
@@ -42,6 +44,7 @@ func NewKeeper(
authority string,
authKeeper authkeeper.AccountKeeper,
didk didkeeper.Keeper,
macaroonKeeper macaroonkeeper.Keeper,
) Keeper {
logger = logger.With(log.ModuleKey, "x/"+types.ModuleName)
@@ -63,12 +66,13 @@ func NewKeeper(
ipfsClient, _ := rpc.NewLocalApi()
k := Keeper{
cdc: cdc,
logger: logger,
DIDKeeper: didk,
AccountKeeper: authKeeper,
Params: collections.NewItem(sb, types.ParamsKey, "params", codec.CollValue[types.Params](cdc)),
OrmDB: store,
cdc: cdc,
logger: logger,
DIDKeeper: didk,
MacaroonKeeper: macaroonKeeper,
AccountKeeper: authKeeper,
Params: collections.NewItem(sb, types.ParamsKey, "params", codec.CollValue[types.Params](cdc)),
OrmDB: store,
ipfsClient: ipfsClient,
authority: authority,
+3 -1
View File
@@ -24,6 +24,7 @@ import (
"github.com/stretchr/testify/suite"
didkeeper "github.com/onsonr/sonr/x/did/keeper"
macaroonkeeper "github.com/onsonr/sonr/x/macaroon/keeper"
module "github.com/onsonr/sonr/x/vault"
"github.com/onsonr/sonr/x/vault/keeper"
"github.com/onsonr/sonr/x/vault/types"
@@ -51,6 +52,7 @@ type testFixture struct {
stakingKeeper *stakingkeeper.Keeper
mintkeeper mintkeeper.Keeper
didk didkeeper.Keeper
mack macaroonkeeper.Keeper
addrs []sdk.AccAddress
govModAddr string
@@ -78,7 +80,7 @@ func SetupTest(t *testing.T) *testFixture {
registerBaseSDKModules(f, encCfg, storeService, logger, require)
// Setup Keeper.
f.k = keeper.NewKeeper(encCfg.Codec, storeService, logger, f.govModAddr, f.accountkeeper, f.didk)
f.k = keeper.NewKeeper(encCfg.Codec, storeService, logger, f.govModAddr, f.accountkeeper, f.didk, f.mack)
f.msgServer = keeper.NewMsgServerImpl(f.k)
f.queryServer = keeper.NewQuerier(f.k)
f.appModule = module.NewAppModule(encCfg.Codec, f.k, f.didk)