mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 19:06:18 +01:00 
			
		
		
		
	Avoid cycle-redirecting user/login page (#28636)
Fix #28231, and remove some unused code. The `db.HasEngine` doesn't seem useful because the db engine is always initialized before web route.
This commit is contained in:
		| @@ -261,16 +261,12 @@ func (opts FindSourcesOptions) ToConds() builder.Cond { | ||||
| // IsSSPIEnabled returns true if there is at least one activated login | ||||
| // source of type LoginSSPI | ||||
| func IsSSPIEnabled(ctx context.Context) bool { | ||||
| 	if !db.HasEngine { | ||||
| 		return false | ||||
| 	} | ||||
|  | ||||
| 	exist, err := db.Exist[Source](ctx, FindSourcesOptions{ | ||||
| 		IsActive:  util.OptionalBoolTrue, | ||||
| 		LoginType: SSPI, | ||||
| 	}.ToConds()) | ||||
| 	if err != nil { | ||||
| 		log.Error("Active SSPI Sources: %v", err) | ||||
| 		log.Error("IsSSPIEnabled: failed to query active SSPI sources: %v", err) | ||||
| 		return false | ||||
| 	} | ||||
| 	return exist | ||||
|   | ||||
| @@ -27,9 +27,6 @@ var ( | ||||
| 	x         *xorm.Engine | ||||
| 	tables    []any | ||||
| 	initFuncs []func() error | ||||
|  | ||||
| 	// HasEngine specifies if we have a xorm.Engine | ||||
| 	HasEngine bool | ||||
| ) | ||||
|  | ||||
| // Engine represents a xorm engine or session. | ||||
|   | ||||
| @@ -341,8 +341,7 @@ func loadServerFrom(rootCfg ConfigProvider) { | ||||
| 		LandingPageURL = LandingPageOrganizations | ||||
| 	case "login": | ||||
| 		LandingPageURL = LandingPageLogin | ||||
| 	case "": | ||||
| 	case "home": | ||||
| 	case "", "home": | ||||
| 		LandingPageURL = LandingPageHome | ||||
| 	default: | ||||
| 		LandingPageURL = LandingPage(landingPage) | ||||
|   | ||||
| @@ -37,7 +37,6 @@ func InitDBEngine(ctx context.Context) (err error) { | ||||
| 		log.Info("Backing off for %d seconds", int64(setting.Database.DBConnectBackoff/time.Second)) | ||||
| 		time.Sleep(setting.Database.DBConnectBackoff) | ||||
| 	} | ||||
| 	db.HasEngine = true | ||||
| 	config.SetDynGetter(system_model.NewDatabaseDynKeyGetter()) | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
| @@ -45,10 +45,6 @@ const ( | ||||
|  | ||||
| // autoSignIn reads cookie and try to auto-login. | ||||
| func autoSignIn(ctx *context.Context) (bool, error) { | ||||
| 	if !db.HasEngine { | ||||
| 		return false, nil | ||||
| 	} | ||||
|  | ||||
| 	isSucceed := false | ||||
| 	defer func() { | ||||
| 		if !isSucceed { | ||||
| @@ -145,7 +141,11 @@ func CheckAutoLogin(ctx *context.Context) bool { | ||||
|  | ||||
| 	if isSucceed { | ||||
| 		middleware.DeleteRedirectToCookie(ctx.Resp) | ||||
| 		ctx.RedirectToFirst(redirectTo, setting.AppSubURL+string(setting.LandingPageURL)) | ||||
| 		nextRedirectTo := setting.AppSubURL + string(setting.LandingPageURL) | ||||
| 		if setting.LandingPageURL == setting.LandingPageLogin { | ||||
| 			nextRedirectTo = setting.AppSubURL + "/" // do not cycle-redirect to the login page | ||||
| 		} | ||||
| 		ctx.RedirectToFirst(redirectTo, nextRedirectTo) | ||||
| 		return true | ||||
| 	} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user