Merge remote-tracking branch 'origin/main' into styling

This commit is contained in:
Johannes 2022-09-22 13:15:17 +02:00
commit 961a10915b
13 changed files with 193 additions and 74 deletions

View file

@ -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)