diff --git a/cmd/pomme/main.go b/cmd/pomme/main.go index 239ab89..81f04aa 100644 --- a/cmd/pomme/main.go +++ b/cmd/pomme/main.go @@ -33,11 +33,11 @@ func main() { } service := auth.NewService(options) service.AddDirectProvider("local", provider.CredCheckerFunc(func(user, password string) (ok bool, err error) { - //ok, err := checkUserSomehow(user, password) + ok, err = api.Login(user, password) return ok, err })) - //m := service.Middleware() + m := service.Middleware() pomme := chi.NewRouter() pomme.Use(middleware.Logger) @@ -45,7 +45,9 @@ func main() { w.Write([]byte("welcome")) }) pomme.Get("/create", api.NewUser) - //pomme.With(m.Auth).Get("/private", api.NewUser) + pomme.With(m.Auth).Get("/private", func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte("secret")) + }) authRoutes, avaRoutes := service.Handlers() pomme.Mount("/auth", authRoutes) // add auth handlers pomme.Mount("/avatar", avaRoutes) // add avatar handler diff --git a/go.mod b/go.mod index e590b1b..e1f659b 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,12 @@ require ( golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90 ) +require ( + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/mattn/go-sqlite3 v1.14.15 // indirect +) + require ( cloud.google.com/go/compute v1.6.1 // indirect github.com/aymerick/douceur v0.2.0 // indirect @@ -20,9 +26,6 @@ require ( github.com/golang/protobuf v1.5.2 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/gorilla/css v1.0.0 // indirect - github.com/jackc/pgpassfile v1.0.0 // indirect - github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect - github.com/jackc/pgx/v5 v5.2.0 github.com/klauspost/compress v1.15.2 // indirect github.com/microcosm-cc/bluemonday v1.0.20 // indirect github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect @@ -44,4 +47,6 @@ require ( golang.org/x/tools v0.1.12 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.28.0 // indirect + gorm.io/driver/sqlite v1.4.3 + gorm.io/gorm v1.24.2 ) diff --git a/go.sum b/go.sum index 852d1d9..f2ec370 100644 --- a/go.sum +++ b/go.sum @@ -209,12 +209,11 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1: github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imkira/go-interpol v1.1.0 h1:KIiKr0VSG2CUW1hl1jpiyuzuJeKUUpC8iM1AIE7N1Vk= github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= -github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= -github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= -github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= -github.com/jackc/pgx/v5 v5.2.0 h1:NdPpngX0Y6z6XDFKqmFQaE+bCtkqzvQIOt1wvBlAqs8= -github.com/jackc/pgx/v5 v5.2.0/go.mod h1:Ptn7zmohNsWEsdxRawMzk3gaKma2obW+NWTnKa0S4nk= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -229,6 +228,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= +github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/microcosm-cc/bluemonday v1.0.20 h1:flpzsq4KU3QIYAYGV/szUat7H+GPOXR0B2JU5A1Wp8Y= github.com/microcosm-cc/bluemonday v1.0.20/go.mod h1:yfBmMi8mxvaZut3Yytv+jTXRY8mxyjJ0/kQBTElld50= github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= @@ -768,6 +769,11 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/sqlite v1.4.3 h1:HBBcZSDnWi5BW3B3rwvVTc510KGkBkexlOg0QrmLUuU= +gorm.io/driver/sqlite v1.4.3/go.mod h1:0Aq3iPO+v9ZKbcdiz8gLWRw5VOPcBOPUQJFLq5e2ecI= +gorm.io/gorm v1.24.0/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= +gorm.io/gorm v1.24.2 h1:9wR6CFD+G8nOusLdvkZelOEhpJVwwHzpQOUM+REd6U0= +gorm.io/gorm v1.24.2/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/internal/api/api.go b/internal/api/api.go index b984219..f0d8ab4 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -1,16 +1,15 @@ package api import ( - "context" "fmt" "log" "math/rand" "net/http" - "os" "strings" "time" - "github.com/jackc/pgx/v5" + "git.freecumextremist.com/grumbulon/pomme/internal" + "git.freecumextremist.com/grumbulon/pomme/internal/db" "github.com/miekg/dns" "golang.org/x/crypto/bcrypt" ) @@ -47,26 +46,28 @@ func NewUser(w http.ResponseWriter, r *http.Request) { if err != nil { panic(err) } - - conn, err := pgx.Connect(context.Background(), os.Getenv("DATABASE_URL")) - if err != nil { - fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err) - os.Exit(1) - } - defer conn.Close(context.Background()) - var hashedDB string - err = conn.QueryRow(context.Background(), "select 'query here'").Scan(&hashedDB) - if err != nil { - fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err) - os.Exit(1) - } + db := db.InitDb() + db.Create(&internal.User{Username: username, HashedPassword: string(hashedPassword)}) w.Write([]byte(username)) w.Write([]byte("██████████")) w.Write(hashedPassword) } +func Login(username, password string) (bool, error) { + username = "user22457" + password = "nigga" //testing purposes + + hashedpassword := "$2a$10$uISHvOh/1Thfri1sJQNVmeWHIbIo/V.OmcpQV7UyIoyOwKSnhODtC" + + err := bcrypt.CompareHashAndPassword([]byte(hashedpassword), []byte(password)) + if err != nil { + return false, err + } + return true, err +} + func autoUname() string { rand.Seed(time.Now().UnixNano()) - return fmt.Sprintf("user%d", rand.Intn(99999-00000)+0000) + return fmt.Sprintf("user%d", rand.Intn(99999-00000)) } diff --git a/internal/db/db.go b/internal/db/db.go new file mode 100644 index 0000000..1167bff --- /dev/null +++ b/internal/db/db.go @@ -0,0 +1,19 @@ +package db + +import ( + "git.freecumextremist.com/grumbulon/pomme/internal" + "gorm.io/driver/sqlite" + "gorm.io/gorm" +) + +func InitDb() *gorm.DB { + db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) + if err != nil { + panic("failed to connect database") + } + + // Migrate the schema + db.AutoMigrate(&internal.User{}) + + return db +} diff --git a/internal/types.go b/internal/types.go new file mode 100644 index 0000000..5d1e99a --- /dev/null +++ b/internal/types.go @@ -0,0 +1,13 @@ +package internal + +import "gorm.io/gorm" + +type IncomingRequest struct { +} + +type User struct { + gorm.Model + Username string + Password string + HashedPassword string +} diff --git a/pkg/types.go b/pkg/types.go deleted file mode 100644 index b813b54..0000000 --- a/pkg/types.go +++ /dev/null @@ -1,4 +0,0 @@ -package pkg - -type IncomingRequest struct { -}