forked from
willdot.net/cocoon
A fork of the Cocoon PDS but being made more distributed.
1package server
2
3import (
4 "github.com/labstack/echo-contrib/session"
5 "github.com/labstack/echo/v4"
6)
7
8func (s *Server) handleAccountSignout(e echo.Context) error {
9 sess, err := session.Get(s.config.SessionCookieKey, e)
10 if err != nil {
11 return err
12 }
13
14 activeDid := getActiveSessionDid(sess)
15 if activeDid != "" {
16 removeSessionDid(sess, activeDid)
17 }
18
19 maxAge := int(AccountSessionMaxAge.Seconds())
20 if len(getSessionDids(sess)) == 0 {
21 maxAge = -1
22 }
23
24 applyAccountSessionOptions(sess, maxAge)
25
26 if err := sess.Save(e.Request(), e.Response()); err != nil {
27 return err
28 }
29
30 reqUri := e.QueryParam("request_uri")
31
32 redirect := "/account/signin"
33 if reqUri != "" {
34 redirect += "?" + e.QueryParams().Encode()
35 }
36
37 return e.Redirect(303, redirect)
38}