Saturday, 26 August 2023

Golang Secure Code Warrior - Handler

 Handler Code:

package handlers


import (

"SCW/go-task-list/internal/logwrapper"

"SCW/go-task-list/internal/middlewares"

"database/sql"

"net/http"


"github.com/dchest/captcha"

"github.com/garyburd/redigo/redis"


"github.com/gorilla/mux"

)


type API struct {

DBAccess   *sql.DB

Log        logwrapper.Logger

Middleware *middlewares.Middleware

RedisDB    redis.Conn

}


func (a *API) Router() http.Handler {

r := mux.NewRouter().StrictSlash(true)

a.addAPIHandlers(r)


return r

}


func (a *API) addAPIHandlers(r *mux.Router) {

r.HandleFunc("/register", a.RegisterPageHandler).Methods("GET")

r.HandleFunc("/register", a.RegisterHandler).Methods("POST")


r.HandleFunc("/", a.LoginPageHandler).Methods("GET")

r.HandleFunc("/login", a.LoginPageHandler).Methods("GET")

loginHandler := a.Middleware.AuthorizationsCheck(a.LoginHandler)

r.HandleFunc("/login", loginHandler).Methods("POST")

logoutHandler := a.Middleware.CheckSession(a.LogoutHandler)

r.HandleFunc("/logout", logoutHandler).Methods("POST")


tasksHandler := a.Middleware.CheckSession(a.TasksHandler)

r.HandleFunc("/tasks", tasksHandler).Methods("GET")

taskHandler := a.Middleware.CheckSession(a.TaskHandler)

r.HandleFunc("/task/{taskUID}", taskHandler).Methods("GET")

taskDeleteHandler := a.Middleware.CheckSession(a.TaskDeleteHandler)

r.HandleFunc("/tasks/delete/{taskUID}", taskDeleteHandler).Methods("POST")

taskCreateHandler := a.Middleware.CheckSession(a.TaskCreateHandler)

r.HandleFunc("/tasks/new", taskCreateHandler).Methods("GET", "POST")


r.Handle("/captcha/{capthcaID}", captcha.Server(captcha.StdWidth, captcha.StdHeight))


http.Handle("/", a.Middleware.PanicMiddleware(a.Middleware.Nocsrf(

a.Middleware.Headers(a.Middleware.LoggingMiddleware(r)))))


go http.ListenAndServeTLS(":8081", "cert.pem", "key.pem", nil)

}





No comments:

Post a Comment

Golang - Email - Secure code warrior

 package mail import ( "net/smtp" "gobin/config" ) var ( emailConfig config.Email ) type Mail struct { Destinati...