auth icon indicating copy to clipboard operation
auth copied to clipboard

Password with Registration Fails

Open danforbes opened this issue 6 years ago • 7 comments

I am unable to register a new user with a password. The UI states invalid account. The server output states (pq: missing FROM-clause entry for table "basics"). I am using code inspired by this project's README.md.

package main

import (
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/postgres"
	"github.com/qor/auth"
	"github.com/qor/auth/auth_identity"
	"github.com/qor/auth/providers/password"
	"github.com/qor/session/manager"

	"net/http"
)

var (
	// Initialize gorm DB
	gormDB, _ = gorm.Open("postgres", "host=localhost port=5432 user=postgres dbname=postgres password=postgres sslmode=disable")

	// Initialize Auth with configuration
	Auth = auth.New(&auth.Config{
		DB: gormDB,
	})
)

func init() {
	// Migrate AuthIdentity model, AuthIdentity will be used to save auth info, like username/password, oauth token, you could change that.
	gormDB.AutoMigrate(&auth_identity.AuthIdentity{})

	// Register Auth providers
	// Allow use username/password
	Auth.RegisterProvider(password.New(&password.Config{}))
}

func main() {
	mux := http.NewServeMux()

	// Mount Auth to Router
	mux.Handle("/auth/", Auth.NewServeMux())
	http.ListenAndServe(":8080", manager.SessionManager.Middleware(mux))
}

danforbes avatar Sep 26 '18 21:09 danforbes

there is a bug about table name which prevent login,register ...

I have a server which have old version of qor, there is no error like this. but I tried to install new qor version on other server, I faced up same issue. I fixed issue via editing library files.

lutfuahmet avatar Sep 30 '18 16:09 lutfuahmet

I have the same. Solved with #15

xnamahx avatar Oct 03 '18 07:10 xnamahx

@jinzhu

gstvg avatar Oct 30 '18 21:10 gstvg

Hotfix: type hotfixedAuthIdentity auth_identity.AuthIdentity func(hotfixedAuthIdentity) TableName() string {return "basics"}

To use custom auth model without having to editing library files, name your user struct "Basics" or define a method TableName() string{return "basics"}, like above. I dont tested #15 yet, but for me it seems like only works when you are using the default auth model: auth_identity.AuthIdentity() The right fix would be "tx.Model(...).Where("provider = ? ", authInfo.Provider).Where("uid = ?", authInfo.UID)"

gstvg avatar Nov 05 '18 22:11 gstvg

Please see https://github.com/qor/auth/issues/12#issuecomment-524820403

We faced this issue when upgraded GORM from v1.9.1 to v1.9.10. Downgrading back fixed the issue.

p.s. This issue appears because GORM v1.9.2 changed behaviour and lack of dependency management in QOR. p.s.s. It's up to you to don't use defaults (handlers, renderers, etc). Also there is not sense to modify original QOR files, because there is opportunity to override behaviour via config.

sergolius avatar Dec 29 '19 16:12 sergolius

I encountered similar problems with g01.13.4 darwin/amd64 while experimenting with the QOR Example server. I was seeing pq: missing FROM-clause entry for table "basics" in server logs. The messages were coming from

  • qor/auth/user_store.go (45)

  • qor/auth/providers/password/handler.go (27)

  • qor/auth/providers/password/confirm.go (81)

I resolved the problem by modifying each of the files. I changed the where() calls similarly in each file to this example from handlers.go line 27

if tx.Model(context.Auth.AuthIdentityModel).Where(authInfo).First(authIdentity).RecordNotFound()

to

if tx.Model(context.Auth.AuthIdentityModel).tx.Where("UID = ?", authInfo.UID).First(authIdentity).RecordNotFound()

sacarr avatar Jan 02 '20 22:01 sacarr

I created a fork of qor where I committed several fixes/pull requests to make it work. Available at, https://github.com/qorpress/qorpress-auth-example

ghost avatar Feb 29 '20 07:02 ghost