| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
- // SPDX-License-Identifier: Apache-2.0
- package ui // import "miniflux.app/v2/internal/ui"
- import (
- "net/http"
- "net/url"
- "strings"
- )
- // isStaticAssetRoute checks if the request path corresponds to a static
- // asset route that does not require a web session.
- func isStaticAssetRoute(r *http.Request) bool {
- path := r.URL.Path
- switch path {
- case "/favicon.ico", "/robots.txt":
- return true
- }
- return strings.HasPrefix(path, "/stylesheets/") ||
- strings.HasPrefix(path, "/js/") ||
- strings.HasPrefix(path, "/icon/") ||
- strings.HasPrefix(path, "/feed-icon/")
- }
- // isPublicRoute checks if the request path corresponds to a route that
- // does not require authentication. The path is expected to have the base
- // path already stripped.
- func isPublicRoute(r *http.Request) bool {
- if isStaticAssetRoute(r) {
- return true
- }
- path := r.URL.Path
- switch path {
- case "/", "/login", "/manifest.json",
- "/healthcheck", "/offline",
- "/webauthn/login/begin", "/webauthn/login/finish":
- return true
- }
- return strings.HasPrefix(path, "/oauth2/") && (strings.HasSuffix(path, "/redirect") || strings.HasSuffix(path, "/callback")) ||
- strings.HasPrefix(path, "/share/") ||
- strings.HasPrefix(path, "/proxy/")
- }
- // loginRedirectURL builds the login page URL with the given request URI
- // stored in the redirect_url query parameter.
- func loginRedirectURL(basePath, requestURI string) string {
- loginURL, _ := url.Parse(basePath + "/")
- values := loginURL.Query()
- values.Set("redirect_url", requestURI)
- loginURL.RawQuery = values.Encode()
- return loginURL.String()
- }
|