git.iko.soy/typeable/oauth2-proxy
on master help sign in
[signout] Implement logout endpoint
562cc2eGuillaume Bienkowski
oauthproxy.go+9
@@ -47,6 +47,7 @@ type OAuthProxy struct {
47 RobotsPath string
47 RobotsPath string
48 PingPath string
48 PingPath string
49 SignInPath string
49 SignInPath string
50+ SignOutPath string
50 OAuthStartPath string
51 OAuthStartPath string
51 OAuthCallbackPath string
52 OAuthCallbackPath string
52 AuthOnlyPath string
53 AuthOnlyPath string
@@ -183,6 +184,7 @@ func NewOAuthProxy(opts *Options, validator func(string) bool) *OAuthProxy {
183 RobotsPath: "/robots.txt",
184 RobotsPath: "/robots.txt",
184 PingPath: "/ping",
185 PingPath: "/ping",
185 SignInPath: fmt.Sprintf("%s/sign_in", opts.ProxyPrefix),
186 SignInPath: fmt.Sprintf("%s/sign_in", opts.ProxyPrefix),
187+ SignOutPath: fmt.Sprintf("%s/sign_out", opts.ProxyPrefix),
186 OAuthStartPath: fmt.Sprintf("%s/start", opts.ProxyPrefix),
188 OAuthStartPath: fmt.Sprintf("%s/start", opts.ProxyPrefix),
187 OAuthCallbackPath: fmt.Sprintf("%s/callback", opts.ProxyPrefix),
189 OAuthCallbackPath: fmt.Sprintf("%s/callback", opts.ProxyPrefix),
188 AuthOnlyPath: fmt.Sprintf("%s/auth", opts.ProxyPrefix),
190 AuthOnlyPath: fmt.Sprintf("%s/auth", opts.ProxyPrefix),
@@ -420,6 +422,8 @@ func (p *OAuthProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
420 p.serveMux.ServeHTTP(rw, req)
422 p.serveMux.ServeHTTP(rw, req)
421 case path == p.SignInPath:
423 case path == p.SignInPath:
422 p.SignIn(rw, req)
424 p.SignIn(rw, req)
425+ case path == p.SignOutPath:
426+ p.SignOut(rw, req)
423 case path == p.OAuthStartPath:
427 case path == p.OAuthStartPath:
424 p.OAuthStart(rw, req)
428 p.OAuthStart(rw, req)
425 case path == p.OAuthCallbackPath:
429 case path == p.OAuthCallbackPath:
@@ -448,6 +452,11 @@ func (p *OAuthProxy) SignIn(rw http.ResponseWriter, req *http.Request) {
448 }
452 }
449}
453}
450
454
455+func (p *OAuthProxy) SignOut(rw http.ResponseWriter, req *http.Request) {
456+ p.ClearCookie(rw, req)
457+ http.Redirect(rw, req, "/", 302)
458+}
459+
451func (p *OAuthProxy) OAuthStart(rw http.ResponseWriter, req *http.Request) {
460func (p *OAuthProxy) OAuthStart(rw http.ResponseWriter, req *http.Request) {
452 redirect, err := p.GetRedirect(req)
461 redirect, err := p.GetRedirect(req)
453 if err != nil {
462 if err != nil {