fix: move signin handler #181
This commit was merged in pull request #198.
This commit is contained in:
@@ -2,6 +2,8 @@ package handler
|
||||
|
||||
import (
|
||||
"me-fit/service"
|
||||
"me-fit/template"
|
||||
"me-fit/template/auth"
|
||||
"me-fit/types"
|
||||
"me-fit/utils"
|
||||
|
||||
@@ -30,7 +32,7 @@ func NewHandlerAuth(db *sql.DB, service service.ServiceAuth, serverSettings *typ
|
||||
|
||||
func (handler HandlerAuthImpl) handle(router *http.ServeMux) {
|
||||
// Don't use auth middleware for these routes, as it makes redirecting very difficult, if the mail is not yet verified
|
||||
router.Handle("/auth/signin", service.HandleSignInPage(handler.db, handler.serverSettings))
|
||||
router.Handle("/auth/signin", handler.handleSignInPage())
|
||||
router.Handle("/auth/signup", service.HandleSignUpPage(handler.db, handler.serverSettings))
|
||||
router.Handle("/auth/verify", service.HandleSignUpVerifyPage(handler.db, handler.serverSettings)) // Hint for the user to verify their email
|
||||
router.Handle("/auth/delete-account", service.HandleDeleteAccountPage(handler.db, handler.serverSettings))
|
||||
@@ -51,6 +53,28 @@ var (
|
||||
securityWaitDuration = 250 * time.Millisecond
|
||||
)
|
||||
|
||||
func (handler HandlerAuthImpl) handleSignInPage() http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
user := utils.GetUserFromSession(handler.db, r)
|
||||
|
||||
if user == nil {
|
||||
userComp := service.UserInfoComp(nil)
|
||||
signIn := auth.SignInOrUpComp(true)
|
||||
err := template.Layout(signIn, userComp, handler.serverSettings.Environment).Render(r.Context(), w)
|
||||
|
||||
if err != nil {
|
||||
utils.LogError("Failed to render sign in page", err)
|
||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
} else if !user.EmailVerified {
|
||||
utils.DoRedirect(w, r, "/auth/verify")
|
||||
} else {
|
||||
utils.DoRedirect(w, r, "/")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (handler HandlerAuthImpl) handleSignIn() http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
user, err := utils.WaitMinimumTime(securityWaitDuration, func() (*service.User, error) {
|
||||
|
||||
@@ -27,6 +27,6 @@ func GetHandler(d *sql.DB, serverSettings *types.ServerSettings) http.Handler {
|
||||
return middleware.Logging(middleware.EnableCors(serverSettings, router))
|
||||
}
|
||||
|
||||
func auth(db *sql.DB, h http.Handler) http.Handler {
|
||||
func authMiddleware(db *sql.DB, h http.Handler) http.Handler {
|
||||
return middleware.EnsureValidSession(db, h)
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@ import (
|
||||
)
|
||||
|
||||
func handleWorkout(db *sql.DB, router *http.ServeMux, serverSettings *types.ServerSettings) {
|
||||
router.Handle("/workout", auth(db, service.HandleWorkoutPage(db, serverSettings)))
|
||||
router.Handle("POST /api/workout", auth(db, service.HandleWorkoutNewComp(db)))
|
||||
router.Handle("GET /api/workout", auth(db, service.HandleWorkoutGetComp(db)))
|
||||
router.Handle("DELETE /api/workout/{id}", auth(db, service.HandleWorkoutDeleteComp(db)))
|
||||
router.Handle("/workout", authMiddleware(db, service.HandleWorkoutPage(db, serverSettings)))
|
||||
router.Handle("POST /api/workout", authMiddleware(db, service.HandleWorkoutNewComp(db)))
|
||||
router.Handle("GET /api/workout", authMiddleware(db, service.HandleWorkoutGetComp(db)))
|
||||
router.Handle("DELETE /api/workout/{id}", authMiddleware(db, service.HandleWorkoutDeleteComp(db)))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user