467f7b1585
This adds standard OAuth2 client credentials and bearer token support as well as scope-based authorization checks for REST API clients. Note that this initial implementation should not be used in production and that the access token limit has not been implemented yet. Signed-off-by: Michael Mayer <michael@photoprism.app>
27 lines
681 B
Go
27 lines
681 B
Go
package entity
|
|
|
|
import (
|
|
"github.com/photoprism/photoprism/pkg/rnd"
|
|
)
|
|
|
|
const TokenConfig = "__config__"
|
|
const TokenPublic = "public"
|
|
|
|
var PreviewToken = NewStringMap(Strings{})
|
|
var DownloadToken = NewStringMap(Strings{})
|
|
var CheckTokens = true
|
|
|
|
// GenerateToken returns a random string token.
|
|
func GenerateToken() string {
|
|
return rnd.Base36(8)
|
|
}
|
|
|
|
// InvalidDownloadToken checks if the token is unknown.
|
|
func InvalidDownloadToken(t string) bool {
|
|
return CheckTokens && DownloadToken.Missing(t)
|
|
}
|
|
|
|
// InvalidPreviewToken checks if the preview token is unknown.
|
|
func InvalidPreviewToken(t string) bool {
|
|
return CheckTokens && PreviewToken.Missing(t) && DownloadToken.Missing(t)
|
|
}
|