summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/app.go7
-rw-r--r--app/authorization.go7
-rw-r--r--cmd/commands/user.go40
-rw-r--r--cmd/commands/user_test.go28
-rw-r--r--utils/config.go13
5 files changed, 15 insertions, 80 deletions
diff --git a/app/app.go b/app/app.go
index 43f598f79..51ee37cbd 100644
--- a/app/app.go
+++ b/app/app.go
@@ -126,7 +126,14 @@ func New(options ...Option) (outApp *App, outErr error) {
}
}
model.AppErrorInit(utils.T)
+
+ // The first time we load config, clear any existing filters to allow the configuration
+ // changes to take effect. This is safe only because no one else is logging at this point.
+ l4g.Close()
+
if err := app.LoadConfig(app.configFile); err != nil {
+ // Re-initialize the default logger as we bail out.
+ l4g.Global = l4g.NewDefaultLogger(l4g.DEBUG)
return nil, err
}
app.EnableConfigWatch()
diff --git a/app/authorization.go b/app/authorization.go
index 632dd7566..2187472f7 100644
--- a/app/authorization.go
+++ b/app/authorization.go
@@ -12,12 +12,7 @@ import (
)
func (a *App) SessionHasPermissionTo(session model.Session, permission *model.Permission) bool {
- if !a.RolesGrantPermission(session.GetUserRoles(), permission.Id) {
- a.ClearSessionCacheForUser(session.UserId)
- return false
- }
-
- return true
+ return a.RolesGrantPermission(session.GetUserRoles(), permission.Id)
}
/// DO NOT USE: LEGACY
diff --git a/cmd/commands/user.go b/cmd/commands/user.go
index 9f5e5ae0d..e3bc8208a 100644
--- a/cmd/commands/user.go
+++ b/cmd/commands/user.go
@@ -66,15 +66,6 @@ var ResetUserPasswordCmd = &cobra.Command{
RunE: resetUserPasswordCmdF,
}
-var updateUserEmailCmd = &cobra.Command{
- Use: "email [user] [new email]",
- Short: "Change email of the user",
- Long: "Change email of the user.",
- Example: ` user email test user@example.com
- user activate username`,
- RunE: updateUserEmailCmdF,
-}
-
var ResetUserMfaCmd = &cobra.Command{
Use: "resetmfa [users]",
Short: "Turn off MFA",
@@ -238,7 +229,6 @@ Global Flags:
UserCreateCmd,
UserInviteCmd,
ResetUserPasswordCmd,
- updateUserEmailCmd,
ResetUserMfaCmd,
DeleteUserCmd,
DeleteAllUsersCmd,
@@ -409,36 +399,6 @@ func resetUserPasswordCmdF(command *cobra.Command, args []string) error {
return nil
}
-func updateUserEmailCmdF(command *cobra.Command, args []string) error {
- a, err := cmd.InitDBCommandContextCobra(command)
- if err != nil {
- return err
- }
-
- newEmail := args[1]
-
- if !model.IsValidEmail(newEmail) {
- return errors.New("Invalid email: '" + newEmail + "'")
- }
-
- if len(args) != 2 {
- return errors.New("Expected two arguments. See help text for details.")
- }
-
- user := getUserFromUserArg(a, args[0])
- if user == nil {
- return errors.New("Unable to find user '" + args[0] + "'")
- }
-
- user.Email = newEmail
- _, errUpdate := a.UpdateUser(user, true)
- if err != nil {
- return errUpdate
- }
-
- return nil
-}
-
func resetUserMfaCmdF(command *cobra.Command, args []string) error {
a, err := cmd.InitDBCommandContextCobra(command)
if err != nil {
diff --git a/cmd/commands/user_test.go b/cmd/commands/user_test.go
index a1081c5d3..960ac3878 100644
--- a/cmd/commands/user_test.go
+++ b/cmd/commands/user_test.go
@@ -9,7 +9,6 @@ import (
"github.com/mattermost/mattermost-server/api"
"github.com/mattermost/mattermost-server/cmd"
"github.com/mattermost/mattermost-server/model"
- "github.com/stretchr/testify/require"
)
func TestCreateUserWithTeam(t *testing.T) {
@@ -81,30 +80,3 @@ func TestMakeUserActiveAndInactive(t *testing.T) {
// activate the inactive user
cmd.CheckCommand(t, "user", "activate", th.BasicUser.Email)
}
-
-func TestChangeUserEmail(t *testing.T) {
- th := api.Setup().InitBasic()
- defer th.TearDown()
-
- newEmail := model.NewId() + "@mattermost-test.com"
-
- cmd.CheckCommand(t, "user", "email", th.BasicUser.Username, newEmail)
- if result := <-th.App.Srv.Store.User().GetByEmail(th.BasicUser.Email); result.Err == nil {
- t.Fatal("should've updated to the new email")
- }
- if result := <-th.App.Srv.Store.User().GetByEmail(newEmail); result.Err != nil {
- t.Fatal()
- } else {
- user := result.Data.(*model.User)
- if user.Email != newEmail {
- t.Fatal("should've updated to the new email")
- }
- }
-
- // should fail because using an invalid email
- require.Error(t, cmd.RunCommand(t, "user", "email", th.BasicUser.Username, "wrong$email.com"))
-
- // should fail because user not found
- require.Error(t, cmd.RunCommand(t, "user", "email", "invalidUser", newEmail))
-
-}
diff --git a/utils/config.go b/utils/config.go
index 7032dbad9..fa436f70d 100644
--- a/utils/config.go
+++ b/utils/config.go
@@ -84,13 +84,15 @@ func ConfigureCmdLineLog() {
ConfigureLog(&ls)
}
+// ConfigureLog enables and configures logging.
+//
+// Note that it is not currently possible to disable filters nor to modify previously enabled
+// filters, given the lack of concurrency guarantees from the underlying l4g library.
+//
// TODO: this code initializes console and file logging. It will eventually be replaced by JSON logging in logger/logger.go
// See PLT-3893 for more information
func ConfigureLog(s *model.LogSettings) {
-
- l4g.Close()
-
- if s.EnableConsole {
+ if _, alreadySet := l4g.Global["stdout"]; !alreadySet && s.EnableConsole {
level := l4g.DEBUG
if s.ConsoleLevel == "INFO" {
level = l4g.INFO
@@ -105,8 +107,7 @@ func ConfigureLog(s *model.LogSettings) {
l4g.AddFilter("stdout", level, lw)
}
- if s.EnableFile {
-
+ if _, alreadySet := l4g.Global["file"]; !alreadySet && s.EnableFile {
var fileFormat = s.FileFormat
if fileFormat == "" {