Merge remote-tracking branch 'origin/main' into styling
This commit is contained in:
commit
961a10915b
13 changed files with 193 additions and 74 deletions
|
@ -5,6 +5,7 @@ import (
|
|||
"bytes"
|
||||
"crypto/rand"
|
||||
"database/sql"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"math/big"
|
||||
|
@ -53,6 +54,8 @@ func (r *RequestRepo) FindByOfficeHour(officeHour models.OfficeHour) ([]models.R
|
|||
var request models.Request
|
||||
var officeHourId int
|
||||
if err := rows.Scan(&request.Id, &officeHourId, &request.Action, &request.Secret); err != nil {
|
||||
err = fmt.Errorf("Error scanning request row: %w", err)
|
||||
log.Println(err.Error())
|
||||
return requests, err
|
||||
}
|
||||
request.OfficeHour, err = r.officeHourRepo.FindById(officeHourId)
|
||||
|
@ -66,7 +69,7 @@ func (r *RequestRepo) FindByOfficeHour(officeHour models.OfficeHour) ([]models.R
|
|||
|
||||
func (r *RequestRepo) Add(officeHour models.OfficeHour, action int) (int, error) {
|
||||
existents, err := r.FindByOfficeHour(officeHour)
|
||||
if err != nil && err != sql.ErrNoRows {
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
return 0, err
|
||||
}
|
||||
/* Resend confirmation mail if identical request exists,
|
||||
|
@ -100,10 +103,10 @@ func (r *RequestRepo) Execute(request models.Request) error {
|
|||
_, err = r.db.Exec("UPDATE officeHour SET active=true WHERE id=?", request.OfficeHour.Id)
|
||||
r.db.Exec("DELETE FROM request WHERE officeHour=?", request.OfficeHour.Id)
|
||||
case models.RequestDelete:
|
||||
r.officeHourRepo.Delete(request.OfficeHour)
|
||||
err = r.officeHourRepo.Delete(request.OfficeHour)
|
||||
r.db.Exec("DELETE FROM request WHERE officeHour=?", request.OfficeHour.Id)
|
||||
default:
|
||||
r.db.Exec("DELETE FROM request WHERE id=?", request.Id)
|
||||
_, err = r.db.Exec("DELETE FROM request WHERE id=?", request.Id)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
@ -112,10 +115,10 @@ func (r *RequestRepo) newSecret() (string, error) {
|
|||
var err error
|
||||
var secret string
|
||||
// find unused secret
|
||||
for err != sql.ErrNoRows {
|
||||
for !errors.Is(err, sql.ErrNoRows) {
|
||||
secret = randomString(r.config.Request.SecretLength)
|
||||
_, err = r.FindBySecret(secret)
|
||||
if err != nil && err != sql.ErrNoRows {
|
||||
if err != nil && errors.Is(err, sql.ErrNoRows) {
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
|
@ -130,7 +133,8 @@ func (r *RequestRepo) sendConfirmationMail(request models.Request) error {
|
|||
}{r.config, request}
|
||||
err := controllers.RawTemplates.ExecuteTemplate(&message, "confirmationMail", data)
|
||||
if err != nil {
|
||||
log.Printf("Error parsing confirmation Mail: %s", err.Error())
|
||||
err = fmt.Errorf("Error parsing confirmation Mail: %w", err)
|
||||
log.Println(err.Error())
|
||||
return err
|
||||
}
|
||||
switch r.config.Mailer.Type {
|
||||
|
@ -142,7 +146,12 @@ func (r *RequestRepo) sendConfirmationMail(request models.Request) error {
|
|||
if r.config.Mailer.SmtpUseAuth {
|
||||
auth = smtp.PlainAuth(r.config.Mailer.SmtpIdentity, r.config.Mailer.FromAddress, r.config.Mailer.SmtpPassword, r.config.Mailer.SmtpHost)
|
||||
}
|
||||
return smtp.SendMail(fmt.Sprintf("%s:%d", r.config.Mailer.SmtpHost, r.config.Mailer.SmtpPort), auth, string(r.config.Mailer.FromName), to, message.Bytes())
|
||||
err = smtp.SendMail(fmt.Sprintf("%s:%d", r.config.Mailer.SmtpHost, r.config.Mailer.SmtpPort), auth, string(r.config.Mailer.FromName), to, message.Bytes())
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Error sending mail by smtp: %w", err)
|
||||
log.Println(err.Error())
|
||||
}
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -154,7 +163,10 @@ func randomString(n int) string {
|
|||
|
||||
s := make([]rune, n)
|
||||
for i := range s {
|
||||
position, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letters))))
|
||||
position, err := rand.Int(rand.Reader, big.NewInt(int64(len(letters))))
|
||||
if err != nil {
|
||||
log.Printf("Error getting random position in randomString(n int): %s", err.Error())
|
||||
}
|
||||
s[i] = letters[position.Int64()]
|
||||
}
|
||||
return string(s)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue