Merge remote-tracking branch 'origin/release-4.9' into merge49final
Этот коммит содержится в:
@@ -126,7 +126,14 @@ func New(options ...Option) (outApp *App, outErr error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
model.AppErrorInit(utils.T)
|
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 {
|
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
|
return nil, err
|
||||||
}
|
}
|
||||||
app.EnableConfigWatch()
|
app.EnableConfigWatch()
|
||||||
|
|||||||
@@ -12,12 +12,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (a *App) SessionHasPermissionTo(session model.Session, permission *model.Permission) bool {
|
func (a *App) SessionHasPermissionTo(session model.Session, permission *model.Permission) bool {
|
||||||
if !a.RolesGrantPermission(session.GetUserRoles(), permission.Id) {
|
return a.RolesGrantPermission(session.GetUserRoles(), permission.Id)
|
||||||
a.ClearSessionCacheForUser(session.UserId)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// DO NOT USE: LEGACY
|
/// DO NOT USE: LEGACY
|
||||||
|
|||||||
@@ -66,15 +66,6 @@ var ResetUserPasswordCmd = &cobra.Command{
|
|||||||
RunE: resetUserPasswordCmdF,
|
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{
|
var ResetUserMfaCmd = &cobra.Command{
|
||||||
Use: "resetmfa [users]",
|
Use: "resetmfa [users]",
|
||||||
Short: "Turn off MFA",
|
Short: "Turn off MFA",
|
||||||
@@ -238,7 +229,6 @@ Global Flags:
|
|||||||
UserCreateCmd,
|
UserCreateCmd,
|
||||||
UserInviteCmd,
|
UserInviteCmd,
|
||||||
ResetUserPasswordCmd,
|
ResetUserPasswordCmd,
|
||||||
updateUserEmailCmd,
|
|
||||||
ResetUserMfaCmd,
|
ResetUserMfaCmd,
|
||||||
DeleteUserCmd,
|
DeleteUserCmd,
|
||||||
DeleteAllUsersCmd,
|
DeleteAllUsersCmd,
|
||||||
@@ -409,36 +399,6 @@ func resetUserPasswordCmdF(command *cobra.Command, args []string) error {
|
|||||||
return nil
|
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 {
|
func resetUserMfaCmdF(command *cobra.Command, args []string) error {
|
||||||
a, err := cmd.InitDBCommandContextCobra(command)
|
a, err := cmd.InitDBCommandContextCobra(command)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import (
|
|||||||
"github.com/mattermost/mattermost-server/api"
|
"github.com/mattermost/mattermost-server/api"
|
||||||
"github.com/mattermost/mattermost-server/cmd"
|
"github.com/mattermost/mattermost-server/cmd"
|
||||||
"github.com/mattermost/mattermost-server/model"
|
"github.com/mattermost/mattermost-server/model"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCreateUserWithTeam(t *testing.T) {
|
func TestCreateUserWithTeam(t *testing.T) {
|
||||||
@@ -81,30 +80,3 @@ func TestMakeUserActiveAndInactive(t *testing.T) {
|
|||||||
// activate the inactive user
|
// activate the inactive user
|
||||||
cmd.CheckCommand(t, "user", "activate", th.BasicUser.Email)
|
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))
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -84,13 +84,15 @@ func ConfigureCmdLineLog() {
|
|||||||
ConfigureLog(&ls)
|
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
|
// 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
|
// See PLT-3893 for more information
|
||||||
func ConfigureLog(s *model.LogSettings) {
|
func ConfigureLog(s *model.LogSettings) {
|
||||||
|
if _, alreadySet := l4g.Global["stdout"]; !alreadySet && s.EnableConsole {
|
||||||
l4g.Close()
|
|
||||||
|
|
||||||
if s.EnableConsole {
|
|
||||||
level := l4g.DEBUG
|
level := l4g.DEBUG
|
||||||
if s.ConsoleLevel == "INFO" {
|
if s.ConsoleLevel == "INFO" {
|
||||||
level = l4g.INFO
|
level = l4g.INFO
|
||||||
@@ -105,8 +107,7 @@ func ConfigureLog(s *model.LogSettings) {
|
|||||||
l4g.AddFilter("stdout", level, lw)
|
l4g.AddFilter("stdout", level, lw)
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.EnableFile {
|
if _, alreadySet := l4g.Global["file"]; !alreadySet && s.EnableFile {
|
||||||
|
|
||||||
var fileFormat = s.FileFormat
|
var fileFormat = s.FileFormat
|
||||||
|
|
||||||
if fileFormat == "" {
|
if fileFormat == "" {
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user