package features_auth import ( "golang.org/x/crypto/bcrypt" "github.com/gofiber/fiber/v2" _ "github.com/mattn/go-sqlite3" sq "github.com/Masterminds/squirrel" "MY/webapp/data" "MY/webapp/common" ) func SetUserPassword(user *data.User) error { hashed, err := bcrypt.GenerateFromPassword([]byte(user.Password), 12) if err != nil { return err } user.Password = string(hashed) return nil } func LogoutUser(c *fiber.Ctx) error { sess, err := common.STORE.Get(c) if err != nil { return err } err = sess.Destroy() if err != nil { return err } err = sess.Save() return err } func LoginUser(result *data.User, login *data.Login) (bool, error) { sql, args, err := sq.Select("username, password"). From("user").Where("username=?", login.Username).ToSql() if err != nil { return false, err } err = data.DB.Get(result, sql, args...) if err != nil { return false, err } pass_good := bcrypt.CompareHashAndPassword([]byte(result.Password), []byte(login.Password)) if pass_good != nil { return false, pass_good } return login.Username == result.Username && pass_good == nil, nil }