58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package auth
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
func (h *Handler) Groups(w http.ResponseWriter, r *http.Request) {
|
|
session, _ := h.idp.SessionsStore.Get(r, "parcoursmob_session")
|
|
|
|
if r.Method == "POST" {
|
|
r.ParseForm()
|
|
|
|
groupid := r.FormValue("group")
|
|
|
|
session.Values["organization"] = groupid
|
|
session.Save(r, w)
|
|
|
|
http.Redirect(w, r, "/app/", http.StatusFound)
|
|
return
|
|
}
|
|
|
|
tokenstring, ok := session.Values["idtoken"]
|
|
if !ok {
|
|
http.Redirect(w, r, "/app/", http.StatusFound)
|
|
return
|
|
}
|
|
|
|
idtoken, err := h.idp.TokenVerifier.Verify(context.Background(), tokenstring.(string))
|
|
if err != nil {
|
|
delete(session.Values, "idtoken")
|
|
http.Redirect(w, r, "/app/", http.StatusFound)
|
|
return
|
|
}
|
|
|
|
result, err := h.applicationHandler.GetUserGroups(idtoken)
|
|
if err != nil {
|
|
log.Error().Err(err).Msg("Failed to get user groups")
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
var groupsresponse = []any{}
|
|
for _, group := range result.Groups {
|
|
groupsresponse = append(groupsresponse, group)
|
|
}
|
|
|
|
h.renderer.AuthGroups(w, r, groupsresponse)
|
|
}
|
|
|
|
func (h *Handler) GroupSwitch(w http.ResponseWriter, r *http.Request) {
|
|
session, _ := h.idp.SessionsStore.Get(r, "parcoursmob_session")
|
|
delete(session.Values, "organization")
|
|
session.Save(r, w)
|
|
http.Redirect(w, r, "/app/", http.StatusFound)
|
|
} |