From 21f094358a9e9dc5ecce9cd8b3603eaafe6ab18d Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 7 Oct 2023 09:48:40 -0400 Subject: [PATCH] wtf --- emails.go | 15 --------------- main.go | 13 +------------ meta.go | 19 +++++++++++++++++++ recovery.go | 24 ++++++++++++++++++++++++ 4 files changed, 44 insertions(+), 27 deletions(-) create mode 100644 recovery.go diff --git a/emails.go b/emails.go index d01116a..0f92571 100644 --- a/emails.go +++ b/emails.go @@ -9,21 +9,6 @@ import ( "time" ) -func RecoverByEmail(email string) { - u, ok := Get(email) - if !ok { - return - } - recoverycode := generatePassword(16) - u.Delete("recoverycode") - u.Delete("recoverytime") - - u.Set("recoverycode", string(recoverycode)) - u.Set("recoverytime", fmt.Sprintf("%d", time.Now().Add(time.Minute*60).Unix())) - - SendRecoveryEmail(email, email, string(recoverycode)) -} - func SendRegistrationEmail(recipient, username, password string) bool { data := struct { SiteName string diff --git a/main.go b/main.go index 0c118c6..0d97961 100644 --- a/main.go +++ b/main.go @@ -128,19 +128,8 @@ func Get(username string) (*UserData, bool) { log.Printf("scsusers.Get: %s", err.Error()) return nil, false } - q = fmt.Sprintf("select meta_key, meta_value, id from %s_meta where user=?", c.TablePrefix) - rows, err := c.db.Query(q, u.UserID) - if err != nil && err != sql.ErrNoRows { - log.Printf("scsuser.Get: select: %s", err.Error()) - return u, false - } - for rows.Next() { - var m metadata - rows.Scan(m.Key, m.Value, m.ID) - u.Meta[m.Key] = m - } - return u, true + return u, u.LoadMeta() } func GetUserid(username string) int64 { diff --git a/meta.go b/meta.go index 2e0b7e0..70b2968 100644 --- a/meta.go +++ b/meta.go @@ -1,6 +1,7 @@ package scsusers import ( + "database/sql" "fmt" "log" ) @@ -10,6 +11,24 @@ type Metadata struct { MetaValue string `db:"meta_value"` } +func (u *UserData) LoadMeta() bool { + q:= fmt.Sprintf("select meta_key, meta_value, id from %s_meta where user=?", c.TablePrefix) + rows, err := c.db.Query(q, u.UserID) + if err != nil && err != sql.ErrNoRows { + log.Printf("scsuser.Get: select: %s", err.Error()) + return false + } + + for rows.Next() { + var m metadata + rows.Scan(m.Key, m.Value, m.ID) + u.Meta[m.Key] = m + log.Printf("Loaded meta key %s id %d value %s", m.Key, m.ID, m.Value) + } + return true + +} + func (u *UserData) Get(key string) (string, bool) { tmp, ok := u.Meta[key] return tmp.Value, ok diff --git a/recovery.go b/recovery.go new file mode 100644 index 0000000..07ea4ce --- /dev/null +++ b/recovery.go @@ -0,0 +1,24 @@ +package scsusers + +import ( + "fmt" + "log" + "time" +) + + +func RecoverByEmail(email string) { + u, ok := Get(email) + if !ok { + return + } + log.Printf("%#v", u) + recoverycode := generatePassword(16) + u.Delete("recoverycode") + u.Delete("recoverytime") + + u.Set("recoverycode", string(recoverycode)) + u.Set("recoverytime", fmt.Sprintf("%d", time.Now().Add(time.Minute*60).Unix())) + + SendRecoveryEmail(email, email, string(recoverycode)) +}