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} } }