Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
fanhousanbu committed Aug 29, 2024
1 parent fdac054 commit 5eaa43c
Show file tree
Hide file tree
Showing 6 changed files with 222 additions and 115 deletions.
208 changes: 104 additions & 104 deletions docs/passkey-er.drawio

Large diffs are not rendered by default.

24 changes: 13 additions & 11 deletions plugins/passkey_relay_party/signup.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,25 +128,27 @@ func (relay *RelayParty) finishRegistration(ctx *gin.Context) {

if user, err := relay.authSessionStore.FinishRegSession(&stubReg, ctx); err != nil {
response.GetResponse().FailCode(ctx, 401, "SignUp failed: "+err.Error())
return
} else {
// TODO: special logic for align testing
if strings.HasSuffix(stubReg.Email, "@aastar.org") {
response.GetResponse().WithDataSuccess(ctx, user)
return
}
if initCode, address, eoaAddress, err := createAA(user, stubReg.Network); err != nil { // TODO: persistent initCode and address
response.InternalServerError(ctx, err.Error())
return
} else {
// TODO: special logic for tokyo
relay.db.Save(user, false)
relay.db.SaveAccounts(user, initCode, address, eoaAddress, string(network))
signup(relay, ctx, &stubReg, user)
}
}

ginJwtMiddleware().LoginHandler(ctx)
func signup(relay *RelayParty, ctx *gin.Context, reg *seedworks.FinishRegistration, user *seedworks.User) {
if initCode, address, eoaAddress, err := createAA(user, reg.Network); err != nil {
response.InternalServerError(ctx, err.Error())
return
} else {
relay.db.Save(user, false)
relay.db.SaveAccounts(user, initCode, address, eoaAddress, string(reg.Network))

return
}
ginJwtMiddleware().LoginHandler(ctx)

return
}
}

Expand Down
57 changes: 57 additions & 0 deletions plugins/passkey_relay_party/storage/migrations/migrate_20240828.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package migrations

import (
"another_node/plugins/passkey_relay_party/storage/model"

"gorm.io/gorm"
)

type Migration20240828 struct {
}

var _ Migration = (*Migration20240828)(nil)

func (m *Migration20240828) Up(db *gorm.DB) error {

if !db.Migrator().HasTable(&model.AirAccount{}) {
if err := db.AutoMigrate(&model.AirAccount{}); err != nil {
return err
}
}

if !db.Migrator().HasTable(&model.AirAccountChain{}) {
if err := db.AutoMigrate(&model.AirAccountChain{}); err != nil {
return err
}
}

if !db.Migrator().HasTable(&model.Passkey{}) {
if err := db.AutoMigrate(&model.Passkey{}); err != nil {
return err
}
}

return nil
}

func (m *Migration20240828) Down(db *gorm.DB) error {
if err := db.Migrator().DropTable(
&model.Passkey{},
); err != nil {
return err
}

if err := db.Migrator().DropTable(
&model.AirAccountChain{},
); err != nil {
return err
}

if err := db.Migrator().DropTable(
&model.AirAccount{},
); err != nil {
return err
}

return nil
}
14 changes: 14 additions & 0 deletions plugins/passkey_relay_party/storage/model/airaccount.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package model

import "another_node/internal/community/storage"

type AirAccount struct {
storage.BaseData
Email string `json:"email" gorm:"type:varchar(255)"`
Facebook string `json:"facebook" gorm:"type:varchar(255)"`
Twitter string `json:"twitter" gorm:"type:varchar(255)"`
}

func (AirAccount) TableName() string {
return "airaccounts"
}
17 changes: 17 additions & 0 deletions plugins/passkey_relay_party/storage/model/airaccount_chain.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package model

import "another_node/internal/community/storage"

type AirAccountChain struct {
storage.BaseData
AirAccountId int64 `json:"airaccount_id" gorm:"column:airaccount_id"`
InitCode string `json:"init_code" gorm:"type:text"`
AA_Address string `json:"aa_address" gorm:"type:varchar(255)"`
EOA_Address string `json:"eoa_address" gorm:"type:varchar(255)"`
Chain string `json:"chain" gorm:"type:varchar(64)"`
WalletVault string `json:"wallet_vault" gorm:"type:text"`
}

func (AirAccountChain) TableName() string {
return "airaccount_chains"
}
17 changes: 17 additions & 0 deletions plugins/passkey_relay_party/storage/model/passkey.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package model

import "another_node/internal/community/storage"

type Passkey struct {
storage.BaseData
AirAccountId int64 `json:"airaccount_id" gorm:"column:airaccount_id"`
PasskeyId string `json:"passkey_id" gorm:"type:varchar(128)"`
PasskeyRawId string `json:"passkey_rawid" gorm:"type:varchar(128)"`
PublicKey string `json:"public_key" gorm:"type:varchar(512)"`
Algorithm string `json:"algorithm" gorm:"type:varchar(64)"`
Origin string `json:"origin" gorm:"type:varchar(255)"`
}

func (Passkey) TableName() string {
return "passkeys"
}

0 comments on commit 5eaa43c

Please sign in to comment.