From 498f7f7393985e0d064c2146fa09b8a0cb320b20 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 13 Dec 2023 15:46:02 -0500 Subject: [PATCH] add suspend and unsuspend calls --- auth.go | 35 +++++++++++++++++++++++++++++++++++ main.go | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/auth.go b/auth.go index 149b54b..845a6fe 100644 --- a/auth.go +++ b/auth.go @@ -4,6 +4,7 @@ import ( "fmt" "log" "strconv" + "strings" "time" "golang.org/x/crypto/bcrypt" @@ -65,3 +66,37 @@ func (u *UserData) ChangePassword(oldpass, newpass string) bool { } return u.SetPassword(newcrypt) } + +func (u *UserData) Suspend() bool { + var hash string + u.Set("status", "inactive") + q := fmt.Sprintf("select password from %s_users where id=? limit 1", c.TablePrefix) + err := c.db.Get(&hash, q, u.UserID) + if err != nil { + return false + } + if strings.HasPrefix(hash, "*") { + return true + } + newhash := "*" + hash + q = fmt.Sprintf("update %s_users set password=? where id=?", c.TablePrefix) + _, err = c.db.Exec(q, newhash, u.UserID) + return err == nil +} + +func (u *UserData) Unsuspend() bool { + var hash string + u.Set("status", "active") + q := fmt.Sprintf("select password from %s_users where id=? limit 1", c.TablePrefix) + err := c.db.Get(&hash, q, u.UserID) + if err != nil { + return false + } + if !strings.HasPrefix(hash, "*") { + return true + } + newhash := strings.TrimPrefix(hash, "*") + q = fmt.Sprintf("update %s_users set password=? where id=?", c.TablePrefix) + _, err = c.db.Exec(q, newhash, u.UserID) + return err == nil +} diff --git a/main.go b/main.go index 73d23b4..af67ff1 100644 --- a/main.go +++ b/main.go @@ -140,7 +140,7 @@ func GetById(id int64) (*UserData, bool) { if err == sql.ErrNoRows { return nil, false } - log.Printf("scsusers.Get: %s", err.Error()) + log.Printf("scsusers.GetById: %s", err.Error()) return nil, false } ok := u.LoadMeta()