mirror of
https://github.com/photoprism/photoprism.git
synced 2025-09-26 21:01:58 +08:00
68 lines
2.1 KiB
Go
68 lines
2.1 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/photoprism/get"
|
|
)
|
|
|
|
// CreateSessionResponse returns the authentication response data for POST requests
|
|
// based on the session and configuration.
|
|
func CreateSessionResponse(authToken string, sess *entity.Session, conf *config.ClientConfig) gin.H {
|
|
return GetSessionResponse(authToken, sess, conf)
|
|
}
|
|
|
|
// CreateSessionError returns an authentication error response.
|
|
func CreateSessionError(code int, err error) gin.H {
|
|
return gin.H{
|
|
"status": StatusFailed,
|
|
"code": code,
|
|
"error": err.Error(),
|
|
"config": get.Config().ClientPublic(),
|
|
}
|
|
}
|
|
|
|
// GetSessionResponse returns the authentication response data for GET requests
|
|
// based on the session and configuration.
|
|
func GetSessionResponse(authToken string, sess *entity.Session, conf *config.ClientConfig) gin.H {
|
|
if authToken == "" {
|
|
return gin.H{
|
|
"status": StatusSuccess,
|
|
"session_id": sess.ID,
|
|
"expires_in": sess.ExpiresIn(),
|
|
"provider": sess.GetProvider().String(),
|
|
"scope": sess.Scope(),
|
|
"user": sess.GetUser(),
|
|
"data": sess.GetData(),
|
|
"config": conf,
|
|
}
|
|
} else {
|
|
return gin.H{
|
|
"status": StatusSuccess,
|
|
// TODO: "id" field is deprecated! Clients should now use "access_token" instead.
|
|
// see https://github.com/photoprism/photoprism/commit/0d2f8be522dbf0a051ae6ef78abfc9efded0082d
|
|
"id": authToken,
|
|
"session_id": sess.ID,
|
|
"access_token": authToken,
|
|
"token_type": sess.AuthTokenType(),
|
|
"expires_in": sess.ExpiresIn(),
|
|
"provider": sess.GetProvider().String(),
|
|
"scope": sess.Scope(),
|
|
"user": sess.GetUser(),
|
|
"data": sess.GetData(),
|
|
"config": conf,
|
|
}
|
|
}
|
|
}
|
|
|
|
// DeleteSessionResponse returns a confirmation response for DELETE requests.
|
|
func DeleteSessionResponse(id string) gin.H {
|
|
if id == "" {
|
|
return gin.H{"status": StatusDeleted}
|
|
} else {
|
|
return gin.H{"status": StatusDeleted, "session_id": id}
|
|
}
|
|
}
|