WIP: fix most broken stuff for now

+ still need to figure out why some routes aren't working
This commit is contained in:
Mark Bailey 2024-11-24 07:06:22 -05:00
parent 114b7b1387
commit 66d92df040
10 changed files with 56 additions and 65 deletions

View File

@ -8,7 +8,7 @@ import (
"git.markbailey.dev/cerbervs/ptpp/lib/logger"
"git.markbailey.dev/cerbervs/ptpp/lib/middleware"
"git.markbailey.dev/cerbervs/ptpp/lib/session"
"git.markbailey.dev/cerbervs/ptpp/util/shared"
"git.markbailey.dev/cerbervs/ptpp/util"
"log"
"net/http"
)
@ -77,8 +77,8 @@ func (r Router) RegisterFs() {
r.Mux = http.NewServeMux()
}
fs := http.FileServer(http.Dir(shared.GetFullyQualifiedPath("/public")))
log.Println("Serving static files from: " + shared.GetFullyQualifiedPath("/public"))
fs := http.FileServer(http.Dir(util.GetFullyQualifiedPath("/public")))
log.Println("Serving static files from: " + util.GetFullyQualifiedPath("/public"))
r.Mux.Handle("GET "+r.BasePath+"public/", http.StripPrefix("/public/", fs))
}
@ -87,7 +87,7 @@ type RouteMapping struct {
Name string
}
func GetFlatRouteList(r Router) []RouteMapping {
func (r Router) GetFlatRouteList() []RouteMapping {
var routes []RouteMapping
for _, route := range r.Routes {
@ -95,15 +95,14 @@ func GetFlatRouteList(r Router) []RouteMapping {
}
for _, subRouter := range *r.SubRouters {
routes = append(routes, GetFlatRouteList(subRouter)...)
routes = append(routes, subRouter.GetFlatRouteList()...)
}
return routes
}
func GetRouteByName(name string) (string, error) {
r := AppRouter
for _, route := range GetFlatRouteList(r) {
func (r Router) GetRouteByName(name string) (string, error) {
for _, route := range r.GetFlatRouteList() {
if route.Name == name {
return route.Path, nil
}

View File

@ -3,7 +3,7 @@ package main
import (
"git.markbailey.dev/cerbervs/ptpp/app"
"git.markbailey.dev/cerbervs/ptpp/app/routing"
"git.markbailey.dev/cerbervs/ptpp/app/server"
main2 "git.markbailey.dev/cerbervs/ptpp/app/server"
"net/http"
"os"
"strconv"
@ -31,7 +31,7 @@ func main() {
port = devPort
}
s := server.Server{
s := main2.Server{
Addr: addr,
Server: http.Server{
Addr: addr + ":" + strconv.Itoa(port),

View File

@ -8,8 +8,7 @@ import (
"git.markbailey.dev/cerbervs/ptpp/lib/database/dto"
"git.markbailey.dev/cerbervs/ptpp/lib/logger"
"git.markbailey.dev/cerbervs/ptpp/lib/session"
"git.markbailey.dev/cerbervs/ptpp/util/auth"
"git.markbailey.dev/cerbervs/ptpp/util/shared"
"git.markbailey.dev/cerbervs/ptpp/util"
"net/http"
"time"
@ -67,10 +66,10 @@ func (c SignOutHandler) Init(s session.IManager, d database.IDB, l logger.ILogge
func (c PopulateHandler) Get(w http.ResponseWriter, r *http.Request) error {
existingOrg, err := c.Db.Repo().FindOrganizationByName("CerbervsSoft")
if existingOrg != nil && err == nil {
return shared.Redirect(w, r, "/signup", http.StatusSeeOther, false)
return util.Redirect(w, r, "/signup", http.StatusSeeOther, false)
}
authToken, err := auth.CreateTokenForUser("CerbervsSoft")
authToken, err := util.CreateTokenForUser("CerbervsSoft")
if err != nil {
return err
}
@ -90,7 +89,7 @@ func (c PopulateHandler) Get(w http.ResponseWriter, r *http.Request) error {
return err
}
return shared.Redirect(w, r, "/signup", http.StatusSeeOther, false)
return util.Redirect(w, r, "/signup", http.StatusSeeOther, false)
}
type UserSignInForm struct {
@ -112,9 +111,9 @@ func (c SignInHandler) Get(w http.ResponseWriter, r *http.Request) error {
}
if foundUser.Admin == 1 {
return shared.Redirect(w, r, "/admin/", http.StatusSeeOther, false)
return util.Redirect(w, r, "/admin/", http.StatusSeeOther, false)
} else {
return shared.Redirect(w, r, "/", http.StatusSeeOther, false)
return util.Redirect(w, r, "/", http.StatusSeeOther, false)
}
}
}
@ -145,10 +144,10 @@ func (c SignInHandler) Post(w http.ResponseWriter, r *http.Request) error {
foundUser, err := c.Db.Repo().FindUserByUsername(fd.Username)
if foundUser == nil || err != nil {
return shared.Redirect(w, r, "/sign-in", http.StatusSeeOther, false)
return util.Redirect(w, r, "/sign-in", http.StatusSeeOther, false)
}
authenticated, err := auth.CheckPassword(fd.Password, foundUser.Password)
authenticated, err := util.CheckPassword(fd.Password, foundUser.Password)
if err != nil || !authenticated {
return failWithFormError(w, r, "Invalid Username or Password.", sess)
}
@ -158,7 +157,7 @@ func (c SignInHandler) Post(w http.ResponseWriter, r *http.Request) error {
return err
}
token, err := auth.CreateTokenForUser(foundUser.Username)
token, err := util.CreateTokenForUser(foundUser.Username)
if err != nil {
c.Logger.Error(c.Logger.Wrap(err, "Error creating token"))
return err
@ -169,7 +168,7 @@ func (c SignInHandler) Post(w http.ResponseWriter, r *http.Request) error {
return err
}
authToken, err := auth.CreateTokenForUser(foundUser.Username)
authToken, err := util.CreateTokenForUser(foundUser.Username)
if err != nil {
c.Logger.Error(err)
return err
@ -186,7 +185,7 @@ func (c SignInHandler) Post(w http.ResponseWriter, r *http.Request) error {
return err
}
jwtToken, err := auth.CreateTokenForUser(fd.Username)
jwtToken, err := util.CreateTokenForUser(fd.Username)
if err != nil {
return err
}
@ -198,16 +197,16 @@ func (c SignInHandler) Post(w http.ResponseWriter, r *http.Request) error {
Path: "/",
})
//err = sess.Delete("formError")
//if err != nil {
// return err
//}
err = sess.Delete("formError")
if err != nil {
return err
}
c.Logger.Info(foundUser.Username + " logged in")
if foundUser.Admin == 1 {
return shared.Redirect(w, r, "/admin/", http.StatusSeeOther, false)
return util.Redirect(w, r, "/admin/", http.StatusSeeOther, false)
} else {
return shared.Redirect(w, r, "/", http.StatusSeeOther, false)
return util.Redirect(w, r, "/", http.StatusSeeOther, false)
}
}
@ -227,7 +226,7 @@ func (c SignUpHandler) Get(w http.ResponseWriter, r *http.Request) error {
uname = ""
}
if uname != "" {
return shared.Redirect(w, r, "/", http.StatusSeeOther, false)
return util.Redirect(w, r, "/", http.StatusSeeOther, false)
}
if err := user.SignUpForm().Render(context.Background(), w); err != nil {
@ -259,13 +258,13 @@ func (c SignUpHandler) Post(w http.ResponseWriter, r *http.Request) error {
return nil
}
token, err := auth.CreateTokenForUser(fd.Username)
token, err := util.CreateTokenForUser(fd.Username)
if err != nil {
c.Logger.Error(c.Logger.Wrap(err, "Error creating token"))
return err
}
password, err := auth.HashPassword(fd.PasswordConfirmation)
password, err := util.HashPassword(fd.PasswordConfirmation)
if err != nil {
c.Logger.Error(c.Logger.Wrap(err, "Error hashing password"))
return err
@ -303,7 +302,7 @@ func (c SignUpHandler) Post(w http.ResponseWriter, r *http.Request) error {
return err
}
jwtToken, err := auth.CreateTokenForUser(fd.Username)
jwtToken, err := util.CreateTokenForUser(fd.Username)
if err != nil {
return err
}
@ -315,7 +314,7 @@ func (c SignUpHandler) Post(w http.ResponseWriter, r *http.Request) error {
Path: "/",
})
return shared.Redirect(w, r, "/sign-in", http.StatusSeeOther, false)
return util.Redirect(w, r, "/sign-in", http.StatusSeeOther, false)
}
return nil
@ -341,7 +340,7 @@ func (c SignOutHandler) Get(w http.ResponseWriter, r *http.Request) error {
Path: "/",
})
return shared.Redirect(w, r, "/", http.StatusSeeOther, true)
return util.Redirect(w, r, "/", http.StatusSeeOther, true)
}
func failWithFormError(w http.ResponseWriter, r *http.Request, formError string, sess session.ISession) error {
@ -349,5 +348,5 @@ func failWithFormError(w http.ResponseWriter, r *http.Request, formError string,
if err != nil {
return err
}
return shared.Redirect(w, r, r.URL.Path, http.StatusSeeOther, false)
return util.Redirect(w, r, r.URL.Path, http.StatusSeeOther, false)
}

View File

@ -3,7 +3,7 @@ package logger
import (
"fmt"
pterror "git.markbailey.dev/cerbervs/ptpp/lib/error"
"git.markbailey.dev/cerbervs/ptpp/util/shared"
"git.markbailey.dev/cerbervs/ptpp/util"
"log"
"os"
"sync"
@ -44,7 +44,7 @@ func (l CompositeLogger) getLogFile() *os.File {
compositeLogFileLock.Lock()
defer compositeLogFileLock.Unlock()
absPath := shared.GetFullyQualifiedPath("/log")
absPath := util.GetFullyQualifiedPath("/log")
err := os.MkdirAll(absPath, os.ModePerm)
if err != nil {

View File

@ -3,7 +3,7 @@ package logger
import (
"fmt"
pterror "git.markbailey.dev/cerbervs/ptpp/lib/error"
"git.markbailey.dev/cerbervs/ptpp/util/shared"
"git.markbailey.dev/cerbervs/ptpp/util"
"log"
"os"
"sync"
@ -44,7 +44,7 @@ func (l DBLogger) getLogFile() *os.File {
dbLogFileLock.Lock()
defer dbLogFileLock.Unlock()
absPath := shared.GetFullyQualifiedPath("/log")
absPath := util.GetFullyQualifiedPath("/log")
generalLog, err := os.OpenFile(absPath+"/db-log.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {

View File

@ -2,8 +2,7 @@ package middleware
import (
"fmt"
"git.markbailey.dev/cerbervs/ptpp/util/auth"
"git.markbailey.dev/cerbervs/ptpp/util/shared"
"git.markbailey.dev/cerbervs/ptpp/util"
"net/http"
"os"
@ -60,7 +59,7 @@ func WithLogger(next http.Handler) http.Handler {
func WithAuth(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
var (
claims *auth.CustomClaims
claims *util.CustomClaims
cookie *http.Cookie
err error
token string
@ -68,7 +67,7 @@ func WithAuth(next http.Handler) http.Handler {
)
if handlerSess.Get("username") != nil {
req := shared.AddValuesToRequestContext(r, map[any]any{
req := util.AddValuesToRequestContext(r, map[any]any{
"username": handlerSess.Get("username"),
})
next.ServeHTTP(w, req)
@ -76,19 +75,19 @@ func WithAuth(next http.Handler) http.Handler {
}
if cookie, err = r.Cookie("token"); err != nil {
_ = shared.Redirect(w, r, "/signin", http.StatusSeeOther, true)
_ = util.Redirect(w, r, "/signin", http.StatusSeeOther, true)
return
}
if token = cookie.Value; token == "" {
_ = shared.Redirect(w, r, "/signin", http.StatusSeeOther, true)
_ = util.Redirect(w, r, "/signin", http.StatusSeeOther, true)
return
}
if claims, err = auth.ParseToken(token, os.Getenv("TOKEN_SECRET")); err != nil {
_ = shared.Redirect(w, r, "/signin", http.StatusSeeOther, true)
if claims, err = util.ParseToken(token, os.Getenv("TOKEN_SECRET")); err != nil {
_ = util.Redirect(w, r, "/signin", http.StatusSeeOther, true)
return
}
req := shared.AddValuesToRequestContext(r, map[any]any{
req := util.AddValuesToRequestContext(r, map[any]any{
"username": claims.Username,
})
next.ServeHTTP(w, req)
@ -98,7 +97,7 @@ func WithAuth(next http.Handler) http.Handler {
func WithUsername(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
var (
claims *auth.CustomClaims
claims *util.CustomClaims
cookie *http.Cookie
err error
token string
@ -106,7 +105,7 @@ func WithUsername(next http.Handler) http.Handler {
)
if handlerSess.Get("username") != nil {
req := shared.AddValuesToRequestContext(r, map[any]any{
req := util.AddValuesToRequestContext(r, map[any]any{
"username": handlerSess.Get("username"),
})
next.ServeHTTP(w, req)
@ -118,14 +117,14 @@ func WithUsername(next http.Handler) http.Handler {
if token = cookie.Value; token == "" {
uname = nil
}
if claims, err = auth.ParseToken(token, os.Getenv("TOKEN_SECRET")); err != nil {
if claims, err = util.ParseToken(token, os.Getenv("TOKEN_SECRET")); err != nil {
uname = nil
}
uname = &claims.Username
}
if uname != nil {
req := shared.AddValuesToRequestContext(r, map[any]any{
req := util.AddValuesToRequestContext(r, map[any]any{
"username": uname,
})
next.ServeHTTP(w, req)

View File

@ -1,4 +1,4 @@
package auth
package util
import (
"errors"

View File

@ -1,4 +1,4 @@
package shared
package util
import (
"context"

View File

@ -1,9 +1,6 @@
package homepage
import (
"git.markbailey.dev/cerbervs/ptpp/view/layout"
"git.markbailey.dev/cerbervs/ptpp/app/routing"
)
import "git.markbailey.dev/cerbervs/ptpp/view/layout"
templ Homepage(env string) {
@layout.Layout() {
@ -12,12 +9,12 @@ templ Homepage(env string) {
Welcome to the homepage
</div>
<div>
<a href='{ routing.GetRouteByName("app.user.sign_up") }'>
<a href="/sign-up">
<button class="text-gray-400 text-md border-black rounded-lg bg-gray-300 p-2">
Sign Up
</button>
</a>
<a href='{ routing.GetRouteByName("app.user.sign_up") }'>
<a href="/sign-in">
<button class="text-gray-400 text-md border-black rounded-lg bg-gray-300 p-2">
Sign In
</button>

View File

@ -8,10 +8,7 @@ package homepage
import "github.com/a-h/templ"
import templruntime "github.com/a-h/templ/runtime"
import (
"git.markbailey.dev/cerbervs/ptpp/app/routing"
"git.markbailey.dev/cerbervs/ptpp/view/layout"
)
import "git.markbailey.dev/cerbervs/ptpp/view/layout"
func Homepage(env string) templ.Component {
return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
@ -46,7 +43,7 @@ func Homepage(env string) templ.Component {
}()
}
ctx = templ.InitializeContext(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"h-screen flex flex-col items-center justify-evenly text-blue-400 text-2xl\"><div>Welcome to the homepage</div><div><a href=\"{ routing.GetRouteByName(&#34;app.user.sign_up&#34;) }\"><button class=\"text-gray-400 text-md border-black rounded-lg bg-gray-300 p-2\">Sign Up</button></a> <a href=\"{ routing.GetRouteByName(&#34;app.user.sign_up&#34;) }\"><button class=\"text-gray-400 text-md border-black rounded-lg bg-gray-300 p-2\">Sign In</button></a></div></div>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"h-screen flex flex-col items-center justify-evenly text-blue-400 text-2xl\"><div>Welcome to the homepage</div><div><a href=\"/sign-up\"><button class=\"text-gray-400 text-md border-black rounded-lg bg-gray-300 p-2\">Sign Up</button></a> <a href=\"/sign-in\"><button class=\"text-gray-400 text-md border-black rounded-lg bg-gray-300 p-2\">Sign In</button></a></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}