aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--db.go32
-rw-r--r--fbfp.scfg.example2
-rw-r--r--go.mod7
-rw-r--r--go.sum10
-rw-r--r--main.go27
-rw-r--r--oidc.go27
-rw-r--r--schema.sql11
7 files changed, 33 insertions, 83 deletions
diff --git a/db.go b/db.go
index 6141553..470f9e5 100644
--- a/db.go
+++ b/db.go
@@ -1,35 +1,19 @@
package main
import (
- "fmt"
+ "database/sql"
- "gorm.io/driver/sqlite"
- "gorm.io/gorm"
+ _ "github.com/mattn/go-sqlite3"
)
-type user_t struct {
- Subject string `gorm:"primaryKey"`
- Name string
- Email string
- Sessions []session_t `gorm:"foreignKey:UserSubject"`
-}
-
-type session_t struct {
- Cookie string `gorm:"primaryKey"`
- UserSubject string
- User user_t `gorm:"foreignKey:UserSubject"`
-}
+var db *sql.DB
func setup_database() error {
var err error
- switch config.Db.Type {
- case "sqlite":
- db, err = gorm.Open(sqlite.Open(config.Db.Conn), &gorm.Config{})
- if err != nil {
- return err
- }
- default:
- return (fmt.Errorf("Database type \"%s\" unsupported", config.Db.Type))
+ db, err = sql.Open(config.Db.Type, config.Db.Conn)
+ if err != nil {
+ return err
+ } else {
+ return nil
}
- return db.AutoMigrate(&user_t{}, &session_t{})
}
diff --git a/fbfp.scfg.example b/fbfp.scfg.example
index 0e72f37..e21cca1 100644
--- a/fbfp.scfg.example
+++ b/fbfp.scfg.example
@@ -37,7 +37,7 @@ listen {
db {
# What type of database should we use? Currently, only "sqlite" is
# supported.
- type sqlite
+ type sqlite3
# What is the connection string to database? For SQLite, this is
# simply a path to the database file.
diff --git a/go.mod b/go.mod
index 772ba08..ef7c087 100644
--- a/go.mod
+++ b/go.mod
@@ -7,15 +7,10 @@ require git.sr.ht/~emersion/go-scfg v0.0.0-20240128091534-2ae16e782082
require (
github.com/MicahParks/keyfunc/v3 v3.3.3
github.com/golang-jwt/jwt/v5 v5.2.1
- gorm.io/driver/sqlite v1.5.6
- gorm.io/gorm v1.25.11
+ github.com/mattn/go-sqlite3 v1.14.22
)
require (
github.com/MicahParks/jwkset v0.5.18 // indirect
- github.com/jinzhu/inflection v1.0.0 // indirect
- github.com/jinzhu/now v1.1.5 // indirect
- github.com/mattn/go-sqlite3 v1.14.22 // indirect
- golang.org/x/text v0.17.0 // indirect
golang.org/x/time v0.6.0 // indirect
)
diff --git a/go.sum b/go.sum
index cb1edea..d541d1d 100644
--- a/go.sum
+++ b/go.sum
@@ -8,17 +8,7 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
-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.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
-github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
-golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
-golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
-gorm.io/driver/sqlite v1.5.6 h1:fO/X46qn5NUEEOZtnjJRWRzZMe8nqJiQ9E+0hi+hKQE=
-gorm.io/driver/sqlite v1.5.6/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4=
-gorm.io/gorm v1.25.11 h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg=
-gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
diff --git a/main.go b/main.go
index 4bb7674..c494cb2 100644
--- a/main.go
+++ b/main.go
@@ -28,11 +28,8 @@ import (
"net"
"net/http"
"net/http/fcgi"
-
- "gorm.io/gorm"
)
-var db *gorm.DB
var tmpl *template.Template
func handle_index(w http.ResponseWriter, req *http.Request) {
@@ -59,36 +56,20 @@ func handle_index(w http.ResponseWriter, req *http.Request) {
)))
return
}
- var session session_t
- err = db.First(&session, session_t{Cookie: session_cookie.Value}).Error
- if err != nil {
- err = tmpl.ExecuteTemplate(
- w,
- "index_login",
- map[string]interface{}{
- "authUrl": generate_authorization_url(),
- "notes": []string{"Cookie lookup failed. You are now unauthenticated."},
- },
- )
- if err != nil {
- log.Println(err)
- return
- }
- return
- }
- fmt.Println(session.User)
- user := session.User
err = tmpl.ExecuteTemplate(
w,
"index",
map[string]interface{}{
- "user": user,
+ "user": map[string]interface{}{
+ "Name": "NAME",
+ },
},
)
if err != nil {
log.Println(err)
return
}
+ _ = session_cookie
}
func main() {
diff --git a/oidc.go b/oidc.go
index 31130fb..add2242 100644
--- a/oidc.go
+++ b/oidc.go
@@ -246,26 +246,15 @@ func handle_oidc(w http.ResponseWriter, req *http.Request) {
http.SetCookie(w, &cookie)
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
- var session session_t
- var user user_t
-
- err = db.FirstOrCreate(&user, user_t{Subject: claims.Subject}).Error
- if err != nil {
- w.Header().Set("Content-Type", "text/plain; charset=utf-8")
- w.WriteHeader(500)
- w.Write([]byte(fmt.Sprintf(
- "Error\nDatabase query failed.\n%s\n",
- err,
- )))
- return
- }
- user.Name = claims.Name
- user.Email = claims.Email
- db.Save(&user)
+ result, err := db.Exec(
+ "INSERT INTO users (id, name, email) VALUES (?, ?, ?)",
+ claims.Subject,
+ claims.Name,
+ claims.Email,
+ )
+ // TODO: handle err
- session.User = user
- session.Cookie = cookie_value
- err = db.Create(&session).Error
+ fmt.Println(result, err)
http.Redirect(w, req, "/", 303)
diff --git a/schema.sql b/schema.sql
new file mode 100644
index 0000000..7e3886f
--- /dev/null
+++ b/schema.sql
@@ -0,0 +1,11 @@
+CREATE TABLE users (
+ id TEXT PRIMARY KEY NOT NULL,
+ name TEXT,
+ email TEXT
+);
+CREATE TABLE sessions (
+ userid TEXT NOT NULL,
+ cookie TEXT,
+ expr INTEGER,
+ FOREIGN KEY(userid) REFERENCES users(id)
+);