|
@@ -285,6 +285,19 @@ func forcePathSeparator(path string) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// IsRunUserMatchCurrentUser returns false if configured run user does not match
|
|
|
+// actual user that runs the app. The first return value is the actual user name.
|
|
|
+// This check is ignored under Windows since SSH remote login is not the main
|
|
|
+// method to login on Windows.
|
|
|
+func IsRunUserMatchCurrentUser(runUser string) (string, bool) {
|
|
|
+ if IsWindows {
|
|
|
+ return "", true
|
|
|
+ }
|
|
|
+
|
|
|
+ currentUser := user.CurrentUsername()
|
|
|
+ return currentUser, runUser == currentUser
|
|
|
+}
|
|
|
+
|
|
|
// NewContext initializes configuration context.
|
|
|
// NOTE: do not print any log except error.
|
|
|
func NewContext() {
|
|
@@ -431,10 +444,12 @@ func NewContext() {
|
|
|
}[Cfg.Section("time").Key("FORMAT").MustString("RFC1123")]
|
|
|
|
|
|
RunUser = Cfg.Section("").Key("RUN_USER").String()
|
|
|
- curUser := user.CurrentUsername()
|
|
|
// Does not check run user when the install lock is off.
|
|
|
- if InstallLock && RunUser != curUser {
|
|
|
- log.Fatal(4, "Expect user(%s) but current user is: %s", RunUser, curUser)
|
|
|
+ if InstallLock {
|
|
|
+ currentUser, match := IsRunUserMatchCurrentUser(RunUser)
|
|
|
+ if !match {
|
|
|
+ log.Fatal(4, "Expect user '%s' but current user is: %s", RunUser, currentUser)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Determine and create root git repository path.
|