Checking to see if a user is logged in, and logging a user our
This commit is contained in:
		| @ -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> | ||||
|  | ||||
		Reference in New Issue
	
	Block a user