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:
		
							parent
							
								
									cc7d118b12
								
							
						
					
					
						commit
						1e877613bf
					
				
					 12 changed files with 29 additions and 26 deletions
				
			
		|  | @ -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); | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue