| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package auth
- import (
- "net/http"
- types "github.com/OliveTin/OliveTin/internal/auth/authpublic"
- log "github.com/sirupsen/logrus"
- )
- func getLocalSessionCookie(r *http.Request) (string, bool) {
- c, err := r.Cookie("olivetin-sid-local")
- if err != nil {
- return "", false
- }
- if c == nil {
- return "", false
- }
- if c.Value == "" {
- return "", false
- }
- return c.Value, true
- }
- func checkUserFromLocalSession(context *types.AuthCheckingContext) *types.AuthenticatedUser {
- u := &types.AuthenticatedUser{}
- sid, ok := getLocalSessionCookie(context.Request)
- if !ok {
- return u
- }
- sess := GetUserSession("local", sid)
- if sess == nil {
- log.WithFields(log.Fields{"sid": sid, "provider": "local"}).Warn("UserFromContext: stale local session")
- return u
- }
- cfgUser := context.Config.FindUserByUsername(sess.Username)
- if cfgUser == nil {
- log.WithFields(log.Fields{"username": sess.Username}).Warn("UserFromContext: local session user not in config")
- return u
- }
- u.Username = cfgUser.Username
- u.UsergroupLine = cfgUser.Usergroup
- u.Provider = "local"
- u.SID = sid
- return u
- }
|