From 2b7f4daf552177e043bc668cb918ad2099a8ce49 Mon Sep 17 00:00:00 2001 From: Igor Anic Date: Tue, 23 Nov 2021 22:23:01 +0100 Subject: [PATCH] add activationID to token remove email --- backend/api/signup/signup.go | 6 ++++-- backend/api/signup/signup_test.go | 1 - backend/config/state.yml | 8 ++++---- backend/config/workspace.yml | 2 +- backend/secret/secret.go | 1 - backend/secret/secret_test.go | 4 ++-- backend/test/register_test.go | 1 - cli/log/log.go | 3 +-- domain/event.go | 3 +-- domain/signup/signup.go | 28 ++++++++++++++-------------- 10 files changed, 27 insertions(+), 30 deletions(-) diff --git a/backend/api/signup/signup.go b/backend/api/signup/signup.go index 005f75c0..7962711a 100644 --- a/backend/api/signup/signup.go +++ b/backend/api/signup/signup.go @@ -64,12 +64,14 @@ func (r *Signup) activate(ctx context.Context, req signup.ActivateRequest) (*sig return nil, nil, fmt.Errorf("activation code not found") } - token, err := secret.Encode(req.ToTokenClaims()) + ar := req.ToRecord(remoteIP(ctx)) + token, err := secret.Encode(ar.ToTokenClaims()) if err != nil { log.Printf("failed to encode user token error: %s", err) return nil, nil, internalServerError } - ar := req.ToRecord(token, remoteIP(ctx)) + ar.Token = token + if err := r.kv.Activations().Put(ar.ID, ar); err != nil { return nil, nil, err } diff --git a/backend/api/signup/signup_test.go b/backend/api/signup/signup_test.go index de2d8a2b..362720aa 100644 --- a/backend/api/signup/signup_test.go +++ b/backend/api/signup/signup_test.go @@ -25,7 +25,6 @@ func TestIntegration(t *testing.T) { var activationCode string t.Run("register", func(t *testing.T) { s := New() - s.noEmail = true req := signup.RegisterRequest{ Email: "hello@mantil.com", Name: "test", diff --git a/backend/config/state.yml b/backend/config/state.yml index bb372aee..9c000a7c 100644 --- a/backend/config/state.yml +++ b/backend/config/state.yml @@ -12,8 +12,8 @@ stages: ws: "" functions: - name: report - hash: 84db2aa5 - s3_key: functions/backend/production/report-84db2aa5.zip + hash: f139b807 + s3_key: functions/backend/production/report-f139b807.zip memory_size: 128 timeout: 900 env: @@ -24,8 +24,8 @@ stages: REPORT_BUCKET: mantil-user-reports SLACK_WEBHOOK: https://hooks.slack.com/services/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 - name: signup - hash: f215fd50 - s3_key: functions/backend/production/signup-f215fd50.zip + hash: 197aeafd + s3_key: functions/backend/production/signup-197aeafd.zip memory_size: 128 timeout: 900 env: diff --git a/backend/config/workspace.yml b/backend/config/workspace.yml index 328062bb..42140b86 100644 --- a/backend/config/workspace.yml +++ b/backend/config/workspace.yml @@ -1,6 +1,6 @@ name: mantil id: QNdJFI41T9CSu3h_gapZjg -version: v0.1.29-24-g8427cef +version: v0.1.29-28-gc5596f9 created_at: 1637668423231 nodes: - name: production diff --git a/backend/secret/secret.go b/backend/secret/secret.go index 1093a806..6cec727a 100644 --- a/backend/secret/secret.go +++ b/backend/secret/secret.go @@ -21,7 +21,6 @@ func Encode(tc signup.TokenClaims) (string, error) { func TokenForTests(machineID string) string { tc := signup.TokenClaims{ ActivationCode: signup.TestActivationCode, - Email: signup.TestEmail, MachineID: machineID, WorkspaceID: signup.TestActivationCode, CreatedAt: time.Now().UnixMilli(), diff --git a/backend/secret/secret_test.go b/backend/secret/secret_test.go index 5255bd25..2fdfccb7 100644 --- a/backend/secret/secret_test.go +++ b/backend/secret/secret_test.go @@ -12,7 +12,7 @@ import ( func TestEncode(t *testing.T) { ut := signup.TokenClaims{ ActivationCode: "userid", - Email: "developer@mantil.com", + ActivationID: "activationID", MachineID: "developerMachine", } @@ -23,6 +23,6 @@ func TestEncode(t *testing.T) { ut2, err := signup.Decode(tkn, cliSecret.SignupPublicKey) require.NoError(t, err) require.Equal(t, ut.ActivationCode, ut2.ActivationCode) - require.Equal(t, ut.Email, ut2.Email) + require.Equal(t, ut.ActivationID, ut2.ActivationID) require.Equal(t, ut.MachineID, ut2.MachineID) } diff --git a/backend/test/register_test.go b/backend/test/register_test.go index b018c1ba..355434c9 100644 --- a/backend/test/register_test.go +++ b/backend/test/register_test.go @@ -46,6 +46,5 @@ func TestSignup(t *testing.T) { t.Logf("jwt: %s", jwt) require.Equal(t, machineID, tc.MachineID) - require.Equal(t, signup.TestEmail, tc.Email) require.Equal(t, signup.TestActivationCode, tc.ActivationCode) } diff --git a/cli/log/log.go b/cli/log/log.go index 76574b59..c79177e2 100644 --- a/cli/log/log.go +++ b/cli/log/log.go @@ -157,9 +157,8 @@ func SetClaims(claims *signup.TokenClaims) { return } cliCommand.User = &domain.CliUser{ - ID: claims.ActivationCode, + ActivationID: claims.ActivationID, ActivationCode: claims.ActivationCode, - Email: claims.Email, } } diff --git a/domain/event.go b/domain/event.go index 31c1aebd..16887461 100644 --- a/domain/event.go +++ b/domain/event.go @@ -40,9 +40,8 @@ type CliCommand struct { } type CliUser struct { - ID string `short:"i,omitempty" json:"id"` + ActivationID string `short:"i,omitempty" json:"activationID"` ActivationCode string `short:"a,omitempty" json:"activationCode"` - Email string `short:"e,omitempty" json:"email"` } type CliProject struct { diff --git a/domain/signup/signup.go b/domain/signup/signup.go index 62515702..364e1391 100644 --- a/domain/signup/signup.go +++ b/domain/signup/signup.go @@ -13,7 +13,7 @@ import ( // TokenClaims content of the user token type TokenClaims struct { ActivationCode string `json:"activationCode,omitempty"` - Email string `json:"email,omitempty"` + ActivationID string `json:"activationID,omitempty"` WorkspaceID string `json:"workspaceID,omitempty"` MachineID string `json:"machineID,omitempty"` CreatedAt int64 `json:"createdAt,omitempty"` @@ -58,7 +58,7 @@ func (r *RegisterRequest) Valid() bool { // RegisterRequest is database record for a registration type RegisterRecord struct { ActivationCode string // primary key, each register request gets new activation code - Activations []string // activation ids for this made with this activation token, link to ActivationRecord + Activations []string // activation made with this activation token, link to ActivateRecord Developer bool // from email RemoteIP string // of the request CreatedAt int64 // unix milli @@ -118,37 +118,37 @@ func (r *ActivateRequest) Valid() bool { } // ToRecord trasforms Request to database Record -func (r *ActivateRequest) ToRecord(token, remoteIP string) ActivateRecord { +func (r *ActivateRequest) ToRecord(remoteIP string) ActivateRecord { return ActivateRecord{ ID: domain.UID(), ActivationCode: r.ActivationCode, WorkspaceID: r.WorkspaceID, MachineID: r.MachineID, - Token: token, RemoteIP: remoteIP, CreatedAt: time.Now().UnixMilli(), } } -func (r *ActivateRequest) ToTokenClaims() TokenClaims { - return TokenClaims{ - ActivationCode: r.ActivationCode, - WorkspaceID: r.WorkspaceID, - MachineID: r.MachineID, - CreatedAt: time.Now().UnixMilli(), - } -} - type ActivateRecord struct { ID string // every activation has unique id ActivationCode string // link to registration WorkspaceID string // from cli MachineID string // from cli Token string // generated for this activation - RemoteIP string // where we got request from + RemoteIP string // from where we got request CreatedAt int64 } +func (r ActivateRecord) ToTokenClaims() TokenClaims { + return TokenClaims{ + ActivationCode: r.ActivationCode, + ActivationID: r.ID, + WorkspaceID: r.WorkspaceID, + MachineID: r.MachineID, + CreatedAt: time.Now().UnixMilli(), + } +} + func (r ActivateRecord) AsWorkspaceRecord() WorkspaceRecord { return WorkspaceRecord{ ID: r.WorkspaceID,