Skip to content

Commit 57087b5

Browse files
committed
Make config and api key optional in dashboard init
1 parent bdbe6d8 commit 57087b5

File tree

6 files changed

+32
-18
lines changed

6 files changed

+32
-18
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ gin/
2020

2121
apiPassword
2222
releasePassword
23-
.vscode/
23+
.vscode/
24+
.idea/

recipe/dashboard/dashboardmodels/models.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,20 @@
1616
package dashboardmodels
1717

1818
type TypeInput struct {
19-
ApiKey string
19+
ApiKey *string
2020
Override *OverrideStruct
2121
}
2222

23+
type TypeAuthMode string
24+
25+
const (
26+
AuthModeEmailPassword TypeAuthMode = "email-password"
27+
AuthModeAPIKey TypeAuthMode = "api-key"
28+
)
29+
2330
type TypeNormalisedInput struct {
24-
ApiKey string
31+
ApiKey *string
32+
AuthMode TypeAuthMode
2533
Override OverrideStruct
2634
}
2735

@@ -36,11 +44,11 @@ type ThirdParty struct {
3644
}
3745

3846
type UserType struct {
39-
Id string `json:"id,omitempty"`
40-
TimeJoined uint64 `json:"timeJoined,omitempty"`
41-
FirstName string `json:"firstName,omitempty"`
42-
LastName string `json:"lastName,omitempty"`
43-
Email string `json:"email,omitempty"`
47+
Id string `json:"id,omitempty"`
48+
TimeJoined uint64 `json:"timeJoined,omitempty"`
49+
FirstName string `json:"firstName,omitempty"`
50+
LastName string `json:"lastName,omitempty"`
51+
Email string `json:"email,omitempty"`
4452
ThirdParty *ThirdParty `json:"thirdParty,omitempty"`
45-
Phone string `json:"phoneNumber,omitempty"`
53+
Phone string `json:"phoneNumber,omitempty"`
4654
}

recipe/dashboard/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ import (
2020
"github.com/supertokens/supertokens-golang/supertokens"
2121
)
2222

23-
func Init(config dashboardmodels.TypeInput) supertokens.Recipe {
23+
func Init(config *dashboardmodels.TypeInput) supertokens.Recipe {
2424
return recipeInit(config)
2525
}

recipe/dashboard/recipe.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ type Recipe struct {
3636

3737
var singletonInstance *Recipe
3838

39-
func MakeRecipe(recipeId string, appInfo supertokens.NormalisedAppinfo, config dashboardmodels.TypeInput, onSuperTokensAPIError func(err error, req *http.Request, res http.ResponseWriter)) (Recipe, error) {
39+
func MakeRecipe(recipeId string, appInfo supertokens.NormalisedAppinfo, config *dashboardmodels.TypeInput, onSuperTokensAPIError func(err error, req *http.Request, res http.ResponseWriter)) (Recipe, error) {
4040
r := &Recipe{}
4141
verifiedConfig := validateAndNormaliseUserInput(appInfo, config)
4242
r.Config = verifiedConfig
@@ -52,7 +52,7 @@ func MakeRecipe(recipeId string, appInfo supertokens.NormalisedAppinfo, config d
5252
return *r, nil
5353
}
5454

55-
func recipeInit(config dashboardmodels.TypeInput) supertokens.Recipe {
55+
func recipeInit(config *dashboardmodels.TypeInput) supertokens.Recipe {
5656
return func(appInfo supertokens.NormalisedAppinfo, onSuperTokensAPIError func(err error, req *http.Request, res http.ResponseWriter)) (*supertokens.RecipeModule, error) {
5757
if singletonInstance == nil {
5858
recipe, err := MakeRecipe(RECIPE_ID, appInfo, config, onSuperTokensAPIError)

recipe/dashboard/recipeimplementation.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ func makeRecipeImplementation() dashboardmodels.RecipeInterface {
3131
}
3232

3333
shouldAllowAccess := func(req *http.Request, config dashboardmodels.TypeNormalisedInput, userContext supertokens.UserContext) (bool, error) {
34+
if config.ApiKey == nil {
35+
// TODO Handle sign in logic here
36+
return false, nil
37+
}
38+
3439
apiKeyHeaderValue := req.Header.Get("authorization")
3540

3641
// We receieve the api key as `Bearer API_KEY`, this retrieves just the key
@@ -41,7 +46,7 @@ func makeRecipeImplementation() dashboardmodels.RecipeInterface {
4146
return false, nil
4247
}
4348

44-
return apiKeyHeaderValue == config.ApiKey, nil
49+
return apiKeyHeaderValue == *config.ApiKey, nil
4550
}
4651

4752
return dashboardmodels.RecipeInterface{

recipe/dashboard/utils.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,14 @@ import (
2323
"github.com/supertokens/supertokens-golang/supertokens"
2424
)
2525

26-
func validateAndNormaliseUserInput(appInfo supertokens.NormalisedAppinfo, config dashboardmodels.TypeInput) dashboardmodels.TypeNormalisedInput {
26+
func validateAndNormaliseUserInput(appInfo supertokens.NormalisedAppinfo, config *dashboardmodels.TypeInput) dashboardmodels.TypeNormalisedInput {
2727
typeNormalisedInput := makeTypeNormalisedInput(appInfo)
2828

29-
if strings.Trim(config.ApiKey, " ") == "" {
30-
panic("ApiKey provided to Dashboard recipe cannot be empty")
29+
if config.ApiKey != nil {
30+
typeNormalisedInput.ApiKey = config.ApiKey
31+
typeNormalisedInput.AuthMode = dashboardmodels.AuthModeAPIKey
3132
}
3233

33-
typeNormalisedInput.ApiKey = config.ApiKey
34-
3534
if config.Override != nil {
3635
if config.Override.Functions != nil {
3736
typeNormalisedInput.Override.Functions = config.Override.Functions
@@ -46,6 +45,7 @@ func validateAndNormaliseUserInput(appInfo supertokens.NormalisedAppinfo, config
4645

4746
func makeTypeNormalisedInput(appInfo supertokens.NormalisedAppinfo) dashboardmodels.TypeNormalisedInput {
4847
return dashboardmodels.TypeNormalisedInput{
48+
AuthMode: dashboardmodels.AuthModeEmailPassword,
4949
Override: dashboardmodels.OverrideStruct{
5050
Functions: func(originalImplementation dashboardmodels.RecipeInterface) dashboardmodels.RecipeInterface {
5151
return originalImplementation

0 commit comments

Comments
 (0)