mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	add /assets as root dir of public files (#15219)
				
					
				
			* add `/assets` as root dir of public files Signed-off-by: a1012112796 <1012112796@qq.com> * move serviceworker.js * make fmt * fix some link * fix test * Apply suggestions from code review Co-authored-by: silverwind <me@silverwind.io> * Apply suggestions from code review Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
		| @@ -51,7 +51,7 @@ func TestRedirectsNoLogin(t *testing.T) { | ||||
| 		"/user2/repo1/src/master":                    "/user2/repo1/src/branch/master", | ||||
| 		"/user2/repo1/src/master/file.txt":           "/user2/repo1/src/branch/master/file.txt", | ||||
| 		"/user2/repo1/src/master/directory/file.txt": "/user2/repo1/src/branch/master/directory/file.txt", | ||||
| 		"/user/avatar/Ghost/-1":                      "/img/avatar_default.png", | ||||
| 		"/user/avatar/Ghost/-1":                      "/assets/img/avatar_default.png", | ||||
| 		"/api/v1/swagger":                            "/api/swagger", | ||||
| 	} | ||||
| 	for link, redirectLink := range redirects { | ||||
|   | ||||
| @@ -32,7 +32,7 @@ func DefaultAvatarLink() string { | ||||
| 		return "" | ||||
| 	} | ||||
|  | ||||
| 	u.Path = path.Join(u.Path, "/img/avatar_default.png") | ||||
| 	u.Path = path.Join(u.Path, "/assets/img/avatar_default.png") | ||||
| 	return u.String() | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -41,7 +41,7 @@ func TestHashEmail(t *testing.T) { | ||||
|  | ||||
| func TestSizedAvatarLink(t *testing.T) { | ||||
| 	disableGravatar() | ||||
| 	assert.Equal(t, "/suburl/img/avatar_default.png", | ||||
| 	assert.Equal(t, "/suburl/assets/img/avatar_default.png", | ||||
| 		SizedAvatarLink("gitea@example.com", 100)) | ||||
|  | ||||
| 	enableGravatar(t) | ||||
|   | ||||
| @@ -23,11 +23,11 @@ type OAuth2Provider struct { | ||||
| // key is used to map the OAuth2Provider with the goth provider type (also in LoginSource.OAuth2Config.Provider) | ||||
| // value is used to store display data | ||||
| var OAuth2Providers = map[string]OAuth2Provider{ | ||||
| 	"bitbucket": {Name: "bitbucket", DisplayName: "Bitbucket", Image: "/img/auth/bitbucket.png"}, | ||||
| 	"dropbox":   {Name: "dropbox", DisplayName: "Dropbox", Image: "/img/auth/dropbox.png"}, | ||||
| 	"facebook":  {Name: "facebook", DisplayName: "Facebook", Image: "/img/auth/facebook.png"}, | ||||
| 	"bitbucket": {Name: "bitbucket", DisplayName: "Bitbucket", Image: "/assets/img/auth/bitbucket.png"}, | ||||
| 	"dropbox":   {Name: "dropbox", DisplayName: "Dropbox", Image: "/assets/img/auth/dropbox.png"}, | ||||
| 	"facebook":  {Name: "facebook", DisplayName: "Facebook", Image: "/assets/img/auth/facebook.png"}, | ||||
| 	"github": { | ||||
| 		Name: "github", DisplayName: "GitHub", Image: "/img/auth/github.png", | ||||
| 		Name: "github", DisplayName: "GitHub", Image: "/assets/img/auth/github.png", | ||||
| 		CustomURLMapping: &oauth2.CustomURLMapping{ | ||||
| 			TokenURL:   oauth2.GetDefaultTokenURL("github"), | ||||
| 			AuthURL:    oauth2.GetDefaultAuthURL("github"), | ||||
| @@ -36,19 +36,19 @@ var OAuth2Providers = map[string]OAuth2Provider{ | ||||
| 		}, | ||||
| 	}, | ||||
| 	"gitlab": { | ||||
| 		Name: "gitlab", DisplayName: "GitLab", Image: "/img/auth/gitlab.png", | ||||
| 		Name: "gitlab", DisplayName: "GitLab", Image: "/assets/img/auth/gitlab.png", | ||||
| 		CustomURLMapping: &oauth2.CustomURLMapping{ | ||||
| 			TokenURL:   oauth2.GetDefaultTokenURL("gitlab"), | ||||
| 			AuthURL:    oauth2.GetDefaultAuthURL("gitlab"), | ||||
| 			ProfileURL: oauth2.GetDefaultProfileURL("gitlab"), | ||||
| 		}, | ||||
| 	}, | ||||
| 	"gplus":         {Name: "gplus", DisplayName: "Google", Image: "/img/auth/google.png"}, | ||||
| 	"openidConnect": {Name: "openidConnect", DisplayName: "OpenID Connect", Image: "/img/auth/openid_connect.svg"}, | ||||
| 	"twitter":       {Name: "twitter", DisplayName: "Twitter", Image: "/img/auth/twitter.png"}, | ||||
| 	"discord":       {Name: "discord", DisplayName: "Discord", Image: "/img/auth/discord.png"}, | ||||
| 	"gplus":         {Name: "gplus", DisplayName: "Google", Image: "/assets/img/auth/google.png"}, | ||||
| 	"openidConnect": {Name: "openidConnect", DisplayName: "OpenID Connect", Image: "/assets/img/auth/openid_connect.svg"}, | ||||
| 	"twitter":       {Name: "twitter", DisplayName: "Twitter", Image: "/assets/img/auth/twitter.png"}, | ||||
| 	"discord":       {Name: "discord", DisplayName: "Discord", Image: "/assets/img/auth/discord.png"}, | ||||
| 	"gitea": { | ||||
| 		Name: "gitea", DisplayName: "Gitea", Image: "/img/auth/gitea.png", | ||||
| 		Name: "gitea", DisplayName: "Gitea", Image: "/assets/img/auth/gitea.png", | ||||
| 		CustomURLMapping: &oauth2.CustomURLMapping{ | ||||
| 			TokenURL:   oauth2.GetDefaultTokenURL("gitea"), | ||||
| 			AuthURL:    oauth2.GetDefaultAuthURL("gitea"), | ||||
| @@ -56,16 +56,16 @@ var OAuth2Providers = map[string]OAuth2Provider{ | ||||
| 		}, | ||||
| 	}, | ||||
| 	"nextcloud": { | ||||
| 		Name: "nextcloud", DisplayName: "Nextcloud", Image: "/img/auth/nextcloud.png", | ||||
| 		Name: "nextcloud", DisplayName: "Nextcloud", Image: "/assets/img/auth/nextcloud.png", | ||||
| 		CustomURLMapping: &oauth2.CustomURLMapping{ | ||||
| 			TokenURL:   oauth2.GetDefaultTokenURL("nextcloud"), | ||||
| 			AuthURL:    oauth2.GetDefaultAuthURL("nextcloud"), | ||||
| 			ProfileURL: oauth2.GetDefaultProfileURL("nextcloud"), | ||||
| 		}, | ||||
| 	}, | ||||
| 	"yandex": {Name: "yandex", DisplayName: "Yandex", Image: "/img/auth/yandex.png"}, | ||||
| 	"yandex": {Name: "yandex", DisplayName: "Yandex", Image: "/assets/img/auth/yandex.png"}, | ||||
| 	"mastodon": { | ||||
| 		Name: "mastodon", DisplayName: "Mastodon", Image: "/img/auth/mastodon.png", | ||||
| 		Name: "mastodon", DisplayName: "Mastodon", Image: "/assets/img/auth/mastodon.png", | ||||
| 		CustomURLMapping: &oauth2.CustomURLMapping{ | ||||
| 			AuthURL: oauth2.GetDefaultAuthURL("mastodon"), | ||||
| 		}, | ||||
|   | ||||
| @@ -25,7 +25,6 @@ import ( | ||||
| 	"code.gitea.io/gitea/modules/generate" | ||||
| 	"code.gitea.io/gitea/modules/git" | ||||
| 	"code.gitea.io/gitea/modules/log" | ||||
| 	"code.gitea.io/gitea/modules/public" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	"code.gitea.io/gitea/modules/storage" | ||||
| 	"code.gitea.io/gitea/modules/structs" | ||||
| @@ -772,7 +771,7 @@ func (u *User) IsGhost() bool { | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	reservedUsernames = append([]string{ | ||||
| 	reservedUsernames = []string{ | ||||
| 		".", | ||||
| 		"..", | ||||
| 		".well-known", | ||||
| @@ -807,7 +806,8 @@ var ( | ||||
| 		"stars", | ||||
| 		"template", | ||||
| 		"user", | ||||
| 	}, public.KnownPublicEntries...) | ||||
| 		"favicon.ico", | ||||
| 	} | ||||
|  | ||||
| 	reservedUserPatterns = []string{"*.keys", "*.gpg"} | ||||
| ) | ||||
|   | ||||
| @@ -32,7 +32,6 @@ var KnownPublicEntries = []string{ | ||||
| 	"js", | ||||
| 	"serviceworker.js", | ||||
| 	"vendor", | ||||
| 	"favicon.ico", | ||||
| } | ||||
|  | ||||
| // Custom implements the static handler for serving custom assets. | ||||
|   | ||||
| @@ -110,5 +110,5 @@ func newRepoAvatarService() { | ||||
| 	RepoAvatar.Storage = getStorage("repo-avatars", storageType, repoAvatarSec) | ||||
|  | ||||
| 	RepoAvatar.Fallback = sec.Key("REPOSITORY_AVATAR_FALLBACK").MustString("none") | ||||
| 	RepoAvatar.FallbackImage = sec.Key("REPOSITORY_AVATAR_FALLBACK_IMAGE").MustString("/img/repo_default.png") | ||||
| 	RepoAvatar.FallbackImage = sec.Key("REPOSITORY_AVATAR_FALLBACK_IMAGE").MustString("/assets/img/repo_default.png") | ||||
| } | ||||
|   | ||||
| @@ -1139,12 +1139,12 @@ func MakeManifestData(appName string, appURL string, absoluteAssetURL string) [] | ||||
| 		StartURL:  appURL, | ||||
| 		Icons: []manifestIcon{ | ||||
| 			{ | ||||
| 				Src:   absoluteAssetURL + "/img/logo.png", | ||||
| 				Src:   absoluteAssetURL + "/assets/img/logo.png", | ||||
| 				Type:  "image/png", | ||||
| 				Sizes: "512x512", | ||||
| 			}, | ||||
| 			{ | ||||
| 				Src:   absoluteAssetURL + "/img/logo.svg", | ||||
| 				Src:   absoluteAssetURL + "/assets/img/logo.svg", | ||||
| 				Type:  "image/svg+xml", | ||||
| 				Sizes: "512x512", | ||||
| 			}, | ||||
|   | ||||
| @@ -61,7 +61,7 @@ func NewFuncMap() []template.FuncMap { | ||||
| 			return setting.AppSubURL | ||||
| 		}, | ||||
| 		"StaticUrlPrefix": func() string { | ||||
| 			return setting.StaticURLPrefix | ||||
| 			return setting.StaticURLPrefix + "/assets" | ||||
| 		}, | ||||
| 		"AppUrl": func() string { | ||||
| 			return setting.AppURL | ||||
|   | ||||
| @@ -152,6 +152,7 @@ func WebRoutes() *web.Route { | ||||
| 		&public.Options{ | ||||
| 			Directory:   path.Join(setting.StaticRootPath, "public"), | ||||
| 			SkipLogging: setting.DisableRouterLog, | ||||
| 			Prefix:      "/assets", | ||||
| 		}, | ||||
| 	)) | ||||
|  | ||||
|   | ||||
| @@ -46,11 +46,14 @@ func GetUserByParams(ctx *context.Context) *models.User { | ||||
| // Profile render user's profile page | ||||
| func Profile(ctx *context.Context) { | ||||
| 	uname := ctx.Params(":username") | ||||
|  | ||||
| 	// Special handle for FireFox requests favicon.ico. | ||||
| 	if uname == "favicon.ico" { | ||||
| 		ctx.ServeFile(path.Join(setting.StaticRootPath, "public/img/favicon.png")) | ||||
| 		return | ||||
| 	} else if strings.HasSuffix(uname, ".png") { | ||||
| 	} | ||||
|  | ||||
| 	if strings.HasSuffix(uname, ".png") { | ||||
| 		ctx.Error(http.StatusNotFound) | ||||
| 		return | ||||
| 	} | ||||
|   | ||||
| @@ -35,7 +35,7 @@ export default async function initServiceWorker() { | ||||
|       // the spec strictly requires it to be same-origin so it has to be AppSubUrl to work | ||||
|       await Promise.all([ | ||||
|         checkCacheValidity(), | ||||
|         navigator.serviceWorker.register(`${AppSubUrl}/serviceworker.js`), | ||||
|         navigator.serviceWorker.register(`${AppSubUrl}/assets/serviceworker.js`), | ||||
|       ]); | ||||
|     } catch (err) { | ||||
|       console.error(err); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user