github.com/jxgolibs/go-oauth2-server@v1.0.1/web/logout.go (about)

     1  package web
     2  
     3  import (
     4  	"net/http"
     5  )
     6  
     7  func (s *Service) logout(w http.ResponseWriter, r *http.Request) {
     8  	// Get the session service from the request context
     9  	sessionService, err := getSessionService(r)
    10  	if err != nil {
    11  		http.Error(w, err.Error(), http.StatusInternalServerError)
    12  		return
    13  	}
    14  
    15  	// Get the user session
    16  	userSession, err := sessionService.GetUserSession()
    17  	if err != nil {
    18  		http.Error(w, err.Error(), http.StatusInternalServerError)
    19  		return
    20  	}
    21  
    22  	// Delete the access and refresh tokens
    23  	s.oauthService.ClearUserTokens(userSession)
    24  
    25  	// Delete the user session
    26  	sessionService.ClearUserSession()
    27  
    28  	// Redirect back to the login page
    29  	redirectWithQueryString("/web/login", r.URL.Query(), w, r)
    30  }