diff options
Diffstat (limited to 'internal/processing/account/create.go')
-rw-r--r-- | internal/processing/account/create.go | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/internal/processing/account/create.go b/internal/processing/account/create.go index 83e76973d..37c742b45 100644 --- a/internal/processing/account/create.go +++ b/internal/processing/account/create.go @@ -19,6 +19,7 @@ package account import ( + "context" "fmt" apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model" @@ -27,16 +28,24 @@ import ( "github.com/superseriousbusiness/oauth2/v4" ) -func (p *processor) Create(applicationToken oauth2.TokenInfo, application *gtsmodel.Application, form *apimodel.AccountCreateRequest) (*apimodel.Token, error) { +func (p *processor) Create(ctx context.Context, applicationToken oauth2.TokenInfo, application *gtsmodel.Application, form *apimodel.AccountCreateRequest) (*apimodel.Token, error) { l := p.log.WithField("func", "accountCreate") - if err := p.db.IsEmailAvailable(form.Email); err != nil { + emailAvailable, err := p.db.IsEmailAvailable(ctx, form.Email) + if err != nil { return nil, err } + if !emailAvailable { + return nil, fmt.Errorf("email address %s in use", form.Email) + } - if err := p.db.IsUsernameAvailable(form.Username); err != nil { + usernameAvailable, err := p.db.IsUsernameAvailable(ctx, form.Username) + if err != nil { return nil, err } + if !usernameAvailable { + return nil, fmt.Errorf("username %s in use", form.Username) + } // don't store a reason if we don't require one reason := form.Reason @@ -45,7 +54,7 @@ func (p *processor) Create(applicationToken oauth2.TokenInfo, application *gtsmo } l.Trace("creating new username and account") - user, err := p.db.NewSignup(form.Username, text.RemoveHTML(reason), p.config.AccountsConfig.RequireApproval, form.Email, form.Password, form.IP, form.Locale, application.ID, false, false) + user, err := p.db.NewSignup(ctx, form.Username, text.RemoveHTML(reason), p.config.AccountsConfig.RequireApproval, form.Email, form.Password, form.IP, form.Locale, application.ID, false, false) if err != nil { return nil, fmt.Errorf("error creating new signup in the database: %s", err) } |