mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Fix migration code so that LastName is populated correctly for users who only have one word in their FullName
This commit is contained in:
@@ -47,10 +47,14 @@ func (us SqlUserStore) UpgradeSchemaIfNeeded() {
|
||||
us.CreateColumnIfNotExists("Users", "LastName", "FirstName", "varchar(64)", "")
|
||||
|
||||
// infer values of first and last name by splitting the previous full name
|
||||
if _, err := us.GetMaster().Exec("UPDATE Users SET " +
|
||||
"FirstName = SUBSTRING_INDEX(SUBSTRING_INDEX(Nickname, ' ', 1), ' ', -1), " +
|
||||
"LastName = SUBSTRING(Nickname, INSTR(Nickname, ' ') + 1)"); err != nil {
|
||||
panic("Failed to set first and last name columns from nickname " + err.Error())
|
||||
if _, err := us.GetMaster().Exec("UPDATE Users SET FirstName = SUBSTRING_INDEX(SUBSTRING_INDEX(Nickname, ' ', 1), ' ', -1)"); err != nil {
|
||||
panic("Failed to set first name from nickname " + err.Error())
|
||||
}
|
||||
|
||||
// only set the last name from full names that are comprised of multiple words (ie that have at least one space in them)
|
||||
if _, err := us.GetMaster().Exec("Update Users SET LastName = SUBSTRING(Nickname, INSTR(Nickname, ' ') + 1) " +
|
||||
"WHERE CHAR_LENGTH(REPLACE(Nickname, ' ', '')) < CHAR_LENGTH(Nickname)"); err != nil {
|
||||
panic("Failed to set last name from nickname " + err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -774,14 +774,13 @@ var GeneralTab = React.createClass({
|
||||
var firstName = this.state.first_name.trim();
|
||||
var lastName = this.state.last_name.trim();
|
||||
|
||||
var fullName = firstName + ' ' + lastName;
|
||||
|
||||
if (user.nickname === fullName) {
|
||||
this.setState({client_error: "You must submit a new name"})
|
||||
if (user.first_name === firstName && user.last_name === lastName) {
|
||||
this.setState({client_error: "You must submit a new first or last name"})
|
||||
return;
|
||||
}
|
||||
|
||||
user.nickname = fullName;
|
||||
user.first_name = firstName;
|
||||
user.last_name = lastName;
|
||||
|
||||
this.submitUser(user);
|
||||
},
|
||||
@@ -879,11 +878,7 @@ var GeneralTab = React.createClass({
|
||||
getInitialState: function() {
|
||||
var user = this.props.user;
|
||||
|
||||
var splitStr = user.nickname.split(' ');
|
||||
var firstName = splitStr.shift();
|
||||
var lastName = splitStr.join(' ');
|
||||
|
||||
return { username: user.username, first_name: firstName, last_name: lastName, nickname: user.nickname,
|
||||
return { username: user.username, first_name: user.first_name, last_name: user.last_name, nickname: user.nickname,
|
||||
email: user.email, picture: null };
|
||||
},
|
||||
render: function() {
|
||||
@@ -919,7 +914,7 @@ var GeneralTab = React.createClass({
|
||||
|
||||
nameSection = (
|
||||
<SettingItemMax
|
||||
title="Name"
|
||||
title="Full Name"
|
||||
inputs={inputs}
|
||||
submit={this.submitName}
|
||||
server_error={server_error}
|
||||
@@ -928,10 +923,20 @@ var GeneralTab = React.createClass({
|
||||
/>
|
||||
);
|
||||
} else {
|
||||
var full_name = "";
|
||||
|
||||
if (user.first_name && user.last_name) {
|
||||
full_name = user.first_name + " " + user.last_name;
|
||||
} else if (user.first_name) {
|
||||
full_name = user.first_name;
|
||||
} else if (user.last_name) {
|
||||
full_name = user.last_name;
|
||||
}
|
||||
|
||||
nameSection = (
|
||||
<SettingItemMin
|
||||
title="Name"
|
||||
describe={UserStore.getCurrentUser().nickname}
|
||||
title="Full Name"
|
||||
describe={full_name}
|
||||
updateSection={function(){self.updateSection("name");}}
|
||||
/>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user