mirror of
https://github.com/photoprism/photoprism.git
synced 2025-10-08 10:10:38 +08:00
66 lines
1.8 KiB
Go
66 lines
1.8 KiB
Go
package api
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"github.com/photoprism/photoprism/internal/config"
|
|
"github.com/photoprism/photoprism/internal/entity"
|
|
"github.com/photoprism/photoprism/internal/get"
|
|
"github.com/photoprism/photoprism/pkg/rnd"
|
|
)
|
|
|
|
// Session finds the client session for the specified
|
|
// auth token, or returns nil if not found.
|
|
func Session(authToken string) *entity.Session {
|
|
// Skip authentication when running in public mode.
|
|
if get.Config().Public() {
|
|
return get.Session().Public()
|
|
} else if !rnd.IsAuthToken(authToken) {
|
|
return nil
|
|
}
|
|
|
|
// Find the session based on the hashed auth
|
|
// token used as id, or return nil otherwise.
|
|
if s, err := get.Session().Get(rnd.SessionID(authToken)); err != nil {
|
|
return nil
|
|
} else {
|
|
return s
|
|
}
|
|
}
|
|
|
|
// SessionResponse returns authentication response data based on the session and client config.
|
|
func SessionResponse(authToken string, sess *entity.Session, conf config.ClientConfig) gin.H {
|
|
if authToken == "" {
|
|
return gin.H{
|
|
"status": "ok",
|
|
"id": sess.ID,
|
|
"expires_in": sess.ExpiresIn(),
|
|
"provider": sess.Provider().String(),
|
|
"user": sess.User(),
|
|
"data": sess.Data(),
|
|
"config": conf,
|
|
}
|
|
} else {
|
|
return gin.H{
|
|
"status": "ok",
|
|
"id": sess.ID,
|
|
"access_token": authToken,
|
|
"token_type": sess.AuthTokenType(),
|
|
"expires_in": sess.ExpiresIn(),
|
|
"provider": sess.Provider().String(),
|
|
"user": sess.User(),
|
|
"data": sess.Data(),
|
|
"config": conf,
|
|
}
|
|
}
|
|
}
|
|
|
|
// SessionDeleteResponse returns a confirmation response for deleted sessions.
|
|
func SessionDeleteResponse(authToken string) gin.H {
|
|
if authToken == "" {
|
|
return gin.H{"status": "ok"}
|
|
} else {
|
|
return gin.H{"status": "ok", "id": authToken, "access_token": authToken}
|
|
}
|
|
}
|