2022-09-28 09:01:17 +02:00
|
|
|
package api
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
|
|
|
"github.com/photoprism/photoprism/internal/entity"
|
2022-10-15 21:54:11 +02:00
|
|
|
"github.com/photoprism/photoprism/internal/get"
|
2022-09-28 09:01:17 +02:00
|
|
|
"github.com/photoprism/photoprism/internal/session"
|
|
|
|
"github.com/photoprism/photoprism/pkg/clean"
|
|
|
|
)
|
|
|
|
|
|
|
|
// SessionID returns the session ID from the request context.
|
|
|
|
func SessionID(c *gin.Context) (sessId string) {
|
|
|
|
if c == nil {
|
|
|
|
// Should never happen.
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
|
|
|
// Get the authentication token from the HTTP headers.
|
|
|
|
return clean.ID(c.GetHeader(session.Header))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Session finds the client session for the given ID or returns nil otherwise.
|
|
|
|
func Session(id string) *entity.Session {
|
2022-10-18 14:21:23 +02:00
|
|
|
// Skip authentication if app is running in public mode.
|
2022-10-15 21:54:11 +02:00
|
|
|
if get.Config().Public() {
|
|
|
|
return get.Session().Public()
|
2022-09-28 09:01:17 +02:00
|
|
|
} else if id == "" {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find session or otherwise return nil.
|
2022-10-15 21:54:11 +02:00
|
|
|
s, err := get.Session().Get(id)
|
2022-09-28 09:01:17 +02:00
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2022-10-03 23:39:36 +02:00
|
|
|
return s
|
2022-09-28 09:01:17 +02:00
|
|
|
}
|