mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Factor out function to get the current user
The same logic was duplicated in three places. Factor it out so that we can add further fallbacks in a single place.
This commit is contained in:
		@@ -24,6 +24,7 @@ import (
 | 
				
			|||||||
	"github.com/gogits/gogs/modules/bindata"
 | 
						"github.com/gogits/gogs/modules/bindata"
 | 
				
			||||||
	"github.com/gogits/gogs/modules/log"
 | 
						"github.com/gogits/gogs/modules/log"
 | 
				
			||||||
	// "github.com/gogits/gogs/modules/ssh"
 | 
						// "github.com/gogits/gogs/modules/ssh"
 | 
				
			||||||
 | 
						"github.com/gogits/gogs/modules/user"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Scheme string
 | 
					type Scheme string
 | 
				
			||||||
@@ -309,10 +310,7 @@ func NewConfigContext() {
 | 
				
			|||||||
	}[Cfg.Section("time").Key("FORMAT").MustString("RFC1123")]
 | 
						}[Cfg.Section("time").Key("FORMAT").MustString("RFC1123")]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	RunUser = Cfg.Section("").Key("RUN_USER").String()
 | 
						RunUser = Cfg.Section("").Key("RUN_USER").String()
 | 
				
			||||||
	curUser := os.Getenv("USER")
 | 
						curUser := user.CurrentUsername()
 | 
				
			||||||
	if len(curUser) == 0 {
 | 
					 | 
				
			||||||
		curUser = os.Getenv("USERNAME")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	// Does not check run user when the install lock is off.
 | 
						// Does not check run user when the install lock is off.
 | 
				
			||||||
	if InstallLock && RunUser != curUser {
 | 
						if InstallLock && RunUser != curUser {
 | 
				
			||||||
		log.Fatal(4, "Expect user(%s) but current user is: %s", RunUser, curUser)
 | 
							log.Fatal(4, "Expect user(%s) but current user is: %s", RunUser, curUser)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								modules/user/user.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								modules/user/user.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					// Copyright 2014 The Gogs Authors. All rights reserved.
 | 
				
			||||||
 | 
					// Use of this source code is governed by a MIT-style
 | 
				
			||||||
 | 
					// license that can be found in the LICENSE file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
					       "os"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func CurrentUsername() string {
 | 
				
			||||||
 | 
						curUserName := os.Getenv("USER")
 | 
				
			||||||
 | 
						if len(curUserName) > 0 {
 | 
				
			||||||
 | 
							return curUserName
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return os.Getenv("USERNAME")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -26,6 +26,7 @@ import (
 | 
				
			|||||||
	"github.com/gogits/gogs/modules/middleware"
 | 
						"github.com/gogits/gogs/modules/middleware"
 | 
				
			||||||
	"github.com/gogits/gogs/modules/setting"
 | 
						"github.com/gogits/gogs/modules/setting"
 | 
				
			||||||
	"github.com/gogits/gogs/modules/social"
 | 
						"github.com/gogits/gogs/modules/social"
 | 
				
			||||||
 | 
						"github.com/gogits/gogs/modules/user"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
@@ -111,10 +112,7 @@ func Install(ctx *middleware.Context) {
 | 
				
			|||||||
	// Note(unknwon): it's hard for Windows users change a running user,
 | 
						// Note(unknwon): it's hard for Windows users change a running user,
 | 
				
			||||||
	// 	so just use current one if config says default.
 | 
						// 	so just use current one if config says default.
 | 
				
			||||||
	if setting.IsWindows && setting.RunUser == "git" {
 | 
						if setting.IsWindows && setting.RunUser == "git" {
 | 
				
			||||||
		form.RunUser = os.Getenv("USER")
 | 
							form.RunUser = user.CurrentUsername()
 | 
				
			||||||
		if len(form.RunUser) == 0 {
 | 
					 | 
				
			||||||
			form.RunUser = os.Getenv("USERNAME")
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		form.RunUser = setting.RunUser
 | 
							form.RunUser = setting.RunUser
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -201,10 +199,7 @@ func InstallPost(ctx *middleware.Context, form auth.InstallForm) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check run user.
 | 
						// Check run user.
 | 
				
			||||||
	curUser := os.Getenv("USER")
 | 
						curUser := user.CurrentUsername()
 | 
				
			||||||
	if len(curUser) == 0 {
 | 
					 | 
				
			||||||
		curUser = os.Getenv("USERNAME")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if form.RunUser != curUser {
 | 
						if form.RunUser != curUser {
 | 
				
			||||||
		ctx.Data["Err_RunUser"] = true
 | 
							ctx.Data["Err_RunUser"] = true
 | 
				
			||||||
		ctx.RenderWithErr(ctx.Tr("install.run_user_not_match", form.RunUser, curUser), INSTALL, &form)
 | 
							ctx.RenderWithErr(ctx.Tr("install.run_user_not_match", form.RunUser, curUser), INSTALL, &form)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user