Checking to see if a user is logged in, and logging a user our
This commit is contained in:
parent
a0853cf880
commit
96f81418ec
@ -32,6 +32,7 @@ func routes(app *config.AppConfig) http.Handler {
|
||||
mux.Get("/book-room", handlers.Repo.BookRoom)
|
||||
mux.Get("/user/login", handlers.Repo.ShowLogin)
|
||||
mux.Post("/user/login", handlers.Repo.PostShowLogin)
|
||||
mux.Get("/user/logout", handlers.Repo.Logout)
|
||||
|
||||
fileServer := http.FileServer(http.Dir("./static/"))
|
||||
mux.Handle("/static/*", http.StripPrefix("/static", fileServer))
|
||||
|
@ -494,3 +494,11 @@ func (m *Repository) PostShowLogin(w http.ResponseWriter, r *http.Request) {
|
||||
m.App.Session.Put(r.Context(), "flash", "Logged in successfully")
|
||||
http.Redirect(w, r, "/", http.StatusSeeOther)
|
||||
}
|
||||
|
||||
// Logout logs a user out
|
||||
func (m *Repository) Logout(w http.ResponseWriter, r *http.Request) {
|
||||
// TODO Use Redis to store the session. Check the documentation of scs package
|
||||
m.App.Session.Destroy(r.Context())
|
||||
m.App.Session.RenewToken(r.Context())
|
||||
http.Redirect(w, r, "/user/login", http.StatusSeeOther)
|
||||
}
|
||||
|
@ -8,9 +8,10 @@ type TemplateData struct {
|
||||
IntMap map[string]int
|
||||
FloatMap map[string]float32
|
||||
Data map[string]interface{}
|
||||
Form *forms.Form
|
||||
CSRFToken string
|
||||
Flash string
|
||||
Warning string
|
||||
Error string
|
||||
Form *forms.Form
|
||||
IsAuthenticated int
|
||||
}
|
||||
|
@ -32,6 +32,9 @@ func AddDefaultData(td *models.TemplateData, r *http.Request) *models.TemplateDa
|
||||
td.Warning = app.Session.PopString(r.Context(), "warning")
|
||||
td.Error = app.Session.PopString(r.Context(), "error")
|
||||
td.CSRFToken = nosurf.Token(r)
|
||||
if app.Session.Exists(r.Context(), "user_id") {
|
||||
td.IsAuthenticated = 1
|
||||
}
|
||||
return td
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,11 @@
|
||||
<a class="nav-link" href="/contact">Contact</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
{{if eq .IsAuthenticated 1}}
|
||||
<a class="nav-link" href="/user/logout">Logout</a>
|
||||
{{else}}
|
||||
<a class="nav-link" href="/user/login">Login</a>
|
||||
{{end}}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user