added user activation to createUser

master
Alex 2021-06-15 22:04:27 +02:00
parent f6dd630133
commit 752b125378
1 changed files with 48 additions and 5 deletions

View File

@ -1,10 +1,14 @@
package user
import (
"bytes"
"crypto/rand"
"database/sql"
"encoding/base64"
"encoding/json"
"io/ioutil"
"math/big"
"net/http"
"regexp"
"strings"
"time"
@ -21,7 +25,7 @@ import (
"gorm.io/gorm"
)
var cfg = &config.Cfg.Settings
var cfg = &config.Cfg
type LoginInput struct {
Username string `json:"username"`
@ -133,6 +137,45 @@ func NewUser(c *fiber.Ctx) error {
return c.SendStatus(fiber.StatusInternalServerError)
}
// account activation via email
type JsonMessage struct {
Key string `json:"k"`
Mail string `json:"m"`
TemplateId int `json:"t"`
LanguageId int `json:"l"`
BodyData *json.RawMessage `json:"d"`
}
bodyData := json.RawMessage(`{"name": "` + user.Name + `",
"email": "` + user.Email + `",
"url": "https://roese.dev/activate/1234567890"}`)
js := JsonMessage{Key: "mykey", Mail: "app@roese.dev", TemplateId: 0, LanguageId: 0, BodyData: &bodyData}
reqBody, err := json.MarshalIndent(&js, "", "\t")
if err != nil {
log.Infoln("error reqBody", err)
}
resp, err := http.Post(cfg.Mail.Host+"/send", "application/json", bytes.NewBuffer(reqBody))
if err != nil {
log.Infoln("err http post", err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Infoln("err reading body", err)
}
log.Infoln("body", body)
log.Infoln("StatusCode", resp.StatusCode)
sessionId, err := createUserSession(db, user.ID, c.IP(), string(c.Context().UserAgent()))
if err != nil {
@ -223,7 +266,7 @@ func isUpper(s string) bool {
}
func isUsernameValid(u string) bool {
if len(u) < int(cfg.UsernameMinLen) || len(u) > int(cfg.UsernameMaxLen) {
if len(u) < int(cfg.Settings.UsernameMinLen) || len(u) > int(cfg.Settings.UsernameMaxLen) {
return false
}
return true
@ -232,14 +275,14 @@ func isUsernameValid(u string) bool {
var emailRegex = regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")
func isEmailValid(e string) bool {
if len(e) < int(cfg.EmailMinLen) || len(e) > int(cfg.EmailMaxLen) {
if len(e) < int(cfg.Settings.EmailMinLen) || len(e) > int(cfg.Settings.EmailMaxLen) {
return false
}
return emailRegex.MatchString(e)
}
func isPasswordValid(p string) bool {
if len(p) < int(cfg.PasswordMinLen) || len(p) > int(cfg.PasswordMaxLen) {
if len(p) < int(cfg.Settings.PasswordMinLen) || len(p) > int(cfg.Settings.PasswordMaxLen) {
return false
}
return true
@ -324,7 +367,7 @@ func createUserSession(db *gorm.DB, userId string, ip string, userAgent string)
}
func getExpiresTime() time.Time {
return time.Now().Add(time.Hour * time.Duration(cfg.ExpiredTime))
return time.Now().Add(time.Hour * time.Duration(cfg.Settings.ExpiredTime))
}
func Login(c *fiber.Ctx) error {