Set max sql connections + improve user register
This commit is contained in:
parent
64e702790f
commit
f1ce85dcb5
|
@ -40,6 +40,8 @@ func SetupDatabase() *sql.DB {
|
||||||
log.Fatalf("Could not connect to database: %s\n", err.Error())
|
log.Fatalf("Could not connect to database: %s\n", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
db.SetMaxOpenConns(24)
|
||||||
|
|
||||||
return db
|
return db
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ func AuthorizeUser(database *sql.DB, username string, password string) (*User, e
|
||||||
return user, nil
|
return user, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func RegisterUser(database *sql.DB, username string, password string, rootPath string) (*User, error) {
|
func RegisterUser(database *sql.Tx, username string, password string, rootPath string) (*User, error) {
|
||||||
hashedPassBytes, err := bcrypt.GenerateFromPassword([]byte(password), 12)
|
hashedPassBytes, err := bcrypt.GenerateFromPassword([]byte(password), 12)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -101,7 +101,7 @@ func RegisterUser(database *sql.DB, username string, password string, rootPath s
|
||||||
return user, nil
|
return user, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (user *User) GenerateAccessToken(database *sql.DB) (*AccessToken, error) {
|
func (user *User) GenerateAccessToken(database *sql.Tx) (*AccessToken, error) {
|
||||||
bytes := make([]byte, 24)
|
bytes := make([]byte, 24)
|
||||||
if _, err := rand.Read(bytes); err != nil {
|
if _, err := rand.Read(bytes); err != nil {
|
||||||
return nil, errors.New(fmt.Sprintf("Could not generate token: %s\n", err.Error()))
|
return nil, errors.New(fmt.Sprintf("Could not generate token: %s\n", err.Error()))
|
||||||
|
|
|
@ -92,6 +92,7 @@ func (r *photoResolver) HighRes(ctx context.Context, obj *models.Photo) (*models
|
||||||
|
|
||||||
url, err := models.NewPhotoURLFromRow(row)
|
url, err := models.NewPhotoURLFromRow(row)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Printf("Error: Could not query highres: %s\n", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,6 +104,7 @@ func (r *photoResolver) Thumbnail(ctx context.Context, obj *models.Photo) (*mode
|
||||||
|
|
||||||
url, err := models.NewPhotoURLFromRow(row)
|
url, err := models.NewPhotoURLFromRow(row)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Printf("Error: Could not query thumbnail: %s\n", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,13 +54,21 @@ func (r *mutationResolver) AuthorizeUser(ctx context.Context, username string, p
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var token *models.AccessToken
|
tx, err := r.Database.Begin()
|
||||||
|
|
||||||
token, err = user.GenerateAccessToken(r.Database)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var token *models.AccessToken
|
||||||
|
|
||||||
|
token, err = user.GenerateAccessToken(tx)
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
tx.Commit()
|
||||||
|
|
||||||
return &models.AuthorizeResult{
|
return &models.AuthorizeResult{
|
||||||
Success: true,
|
Success: true,
|
||||||
Status: "ok",
|
Status: "ok",
|
||||||
|
@ -68,16 +76,27 @@ func (r *mutationResolver) AuthorizeUser(ctx context.Context, username string, p
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
func (r *mutationResolver) RegisterUser(ctx context.Context, username string, password string, rootPath string) (*models.AuthorizeResult, error) {
|
func (r *mutationResolver) RegisterUser(ctx context.Context, username string, password string, rootPath string) (*models.AuthorizeResult, error) {
|
||||||
user, err := models.RegisterUser(r.Database, username, password, rootPath)
|
tx, err := r.Database.Begin()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
user, err := models.RegisterUser(tx, username, password, rootPath)
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback()
|
||||||
return &models.AuthorizeResult{
|
return &models.AuthorizeResult{
|
||||||
Success: false,
|
Success: false,
|
||||||
Status: err.Error(),
|
Status: err.Error(),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
token, err := user.GenerateAccessToken(r.Database)
|
token, err := user.GenerateAccessToken(tx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := tx.Commit(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,13 +113,47 @@ func (r *mutationResolver) InitialSetupWizard(ctx context.Context, username stri
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := r.Database.Exec("UPDATE site_info SET initial_setup = false"); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if !siteInfo.InitialSetup {
|
if !siteInfo.InitialSetup {
|
||||||
return nil, errors.New("not initial setup")
|
return nil, errors.New("not initial setup")
|
||||||
}
|
}
|
||||||
|
|
||||||
return r.RegisterUser(ctx, username, password, rootPath)
|
tx, err := r.Database.Begin()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := tx.Exec("UPDATE site_info SET initial_setup = false"); err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
user, err := models.RegisterUser(tx, username, password, rootPath)
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return &models.AuthorizeResult{
|
||||||
|
Success: false,
|
||||||
|
Status: err.Error(),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := tx.Exec("UPDATE user SET admin = true WHERE user_id = ?", user.UserID); err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
token, err := user.GenerateAccessToken(tx)
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := tx.Commit(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &models.AuthorizeResult{
|
||||||
|
Success: true,
|
||||||
|
Status: "ok",
|
||||||
|
Token: &token.Value,
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue