mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-02 17:31:39 +00:00
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:
@@ -1 +0,0 @@
|
||||
package types
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
@@ -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{}}
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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{}}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user